[iOS] NYXImagesKit を使って UIImage を編集する
NYXImagesKit
遅くなりましたが明けましておめでとうございます。本年もよろしくお願い致します。
iOS アプリで画像のアップロード機能を実装するとき、UIImage のリサイズを行うことがよくあると思います。 こういった編集処理は一度実装してしまえばソースコードを使い回せば良いのですが、頼れるのであれば OSS に頼ってしまいたいところです。
そこで今回はiOSオープンソースライブラリ徹底活用にも紹介されている、画像編集の定番 OSS の「NYXImagesKit」を使って UIImage をリサイズする方法をご紹介したいと思います。なお NYXImagesKit はリサイズ以外にも編集機能が備わっているので、それらも一緒に解説します。
導入方法
導入は CocoaPods を使うのが簡単です。Podfile に NYXImagesKit を追加して…
pod 'NYXImagesKit'
pod install コマンドを実行です。
pod install
使いかた
ひと通りの編集処理を試してみました。ソースコードを GitHub で公開しているので、いますぐ実機で確認したい!というかたはこちらから Clone してビルドしてください。
UIImage+Filtering
明度, コントラスト, エッジ, エンボス, ガンマ, グレースケール, 色相反転, 透明度, セピア, シャープ, アンシャープの調整ができます。
明度調整
UIImage *image = [UIImage imageNamed:@"sample"]; image = [image brightenWithValue:0.5 * 255]; // -255 ~ 255 で指定
実行結果
コントラスト調整
UIImage *image = [UIImage imageNamed:@"sample"]; image = [image contrastAdjustmentWithValue:0.5 * 255]; // -255 ~ 255 で指定
実行結果
エッジ検出
UIImage *image = [UIImage imageNamed:@"sample"]; image = [image edgeDetectionWithBias:5];
実行結果
エンボス効果
UIImage *image = [UIImage imageNamed:@"sample"]; image = [image embossWithBias:5];
実行結果
ガンマ補正
UIImage *image = [UIImage imageNamed:@"sample"]; image = [image gammaCorrectionWithValue:8]; // 0.01 ~ 8
実行結果
グレースケール
UIImage *image = [UIImage imageNamed:@"sample"]; image = [image grayscale];
実行結果
色相反転
UIImage *image = [UIImage imageNamed:@"sample"]; image = [image invert];
実行結果
透明度
UIImage *image = [UIImage imageNamed:@"sample"]; image = [image opacity:0.5f]; // 0.0 ~ 1.0
実行結果
※ 透過していることを確認するため、グレー地の背景を設定しています。
セピア
UIImage *image = [UIImage imageNamed:@"sample"]; image = [image sepia];
実行結果
シャープ
UIImage *image = [UIImage imageNamed:@"sample"]; image = [image sharpenWithBias:5];
実行結果
アンシャープ
UIImage *image = [UIImage imageNamed:@"sample"]; image = [image unsharpenWithBias:5];
実行結果
UIImage+Blurring
ブラーです。いわゆるぼかしです。
UIImage *image = [UIImage imageNamed:@"sample"]; [image gaussianBlurWithBias:5];
実行結果
UIImage+Masking
もう一つの UIImage でマスクをかけることができます。
UIImage *image = [UIImage imageNamed:@"sample"]; image = [image maskWithImage:[UIImage imageNamed:@"mask.png"]];
実行結果
※ マスクしていることを確認するため、グレー地の背景を設定しています。
UIImage+Resizing
リサイズは、サイズ指定のクロップとアスペクト比を維持したスケールができます。
UIImage *image = [UIImage imageNamed:@"sample"]; image = [image scaleToFitSize:CGSizeMake(120, 80)];
実行結果
※ スケールしていることを確認するため、グレー地の背景を設定しています。
UIImage+Rotating
回転。反転もできます。
UIImage *image = [UIImage imageNamed:@"sample"]; image = [image rotateInDegrees:180];
実行結果
UIImage+Reflection
リフレクション(反射)を作ります。ちょっと前にすごく流行ったやつですね。
UIImage *image = [UIImage imageNamed:@"sample"]; image = [image reflectedImageWithHeight:image.size.height fromAlpha:0.0f toAlpha:0.5f];
実行結果
※ 透過していることを確認するため、グレー地の背景を設定しています。
UIImage+Enhancing
赤目補正などのような自動補正です。処理にちょっと時間がかかります。
UIImage *image = [UIImage imageNamed:@"sample"]; image = [[image autoEnhance] redEyeCorrection];
実行結果
UIImage+Saving
NYXImagesKit は編集以外にローカルストレージに保存する機能も持っています。便利ですね!
UIImage *image = [UIImage imageNamed:@"sample"]; [image saveToPhotosAlbum];
まとめ
そのままでは面倒だった処理も、OSS を使うと楽ちんですね!サンプルコードを参考に、ぜひ使ってみてください。
謝辞
画像素材はふぉとさいくさんからいただきました。ありがとうございました!