[iOS] NYXImagesKit を使って UIImage を編集する

この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。

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 で指定

実行結果

brighten

コントラスト調整

UIImage *image = [UIImage imageNamed:@"sample"];
image = [image contrastAdjustmentWithValue:0.5 * 255]; // -255 ~ 255 で指定

実行結果

contrast

エッジ検出

UIImage *image = [UIImage imageNamed:@"sample"];
image = [image edgeDetectionWithBias:5];

実行結果

edge

エンボス効果

UIImage *image = [UIImage imageNamed:@"sample"];
image = [image embossWithBias:5];

実行結果

emboss

ガンマ補正

UIImage *image = [UIImage imageNamed:@"sample"];
image = [image gammaCorrectionWithValue:8]; // 0.01 ~ 8

実行結果

gamma

グレースケール

UIImage *image = [UIImage imageNamed:@"sample"];
image = [image grayscale];

実行結果

grayscale

色相反転

UIImage *image = [UIImage imageNamed:@"sample"];
image = [image invert];

実行結果

invert

透明度

UIImage *image = [UIImage imageNamed:@"sample"];
image = [image opacity:0.5f]; // 0.0 ~ 1.0

実行結果

opacity

※ 透過していることを確認するため、グレー地の背景を設定しています。

セピア

UIImage *image = [UIImage imageNamed:@"sample"];
image = [image sepia];

実行結果

sepia

シャープ

UIImage *image = [UIImage imageNamed:@"sample"];
image = [image sharpenWithBias:5];

実行結果

sharpen

アンシャープ

UIImage *image = [UIImage imageNamed:@"sample"];
image = [image unsharpenWithBias:5];

実行結果

unsharpen

UIImage+Blurring

ブラーです。いわゆるぼかしです。

UIImage *image = [UIImage imageNamed:@"sample"];
[image gaussianBlurWithBias:5];

実行結果

blur

UIImage+Masking

もう一つの UIImage でマスクをかけることができます。

UIImage *image = [UIImage imageNamed:@"sample"];
image = [image maskWithImage:[UIImage imageNamed:@"mask.png"]];

実行結果

mask

※ マスクしていることを確認するため、グレー地の背景を設定しています。

UIImage+Resizing

リサイズは、サイズ指定のクロップとアスペクト比を維持したスケールができます。

UIImage *image = [UIImage imageNamed:@"sample"];
image = [image scaleToFitSize:CGSizeMake(120, 80)];

実行結果

resize

※ スケールしていることを確認するため、グレー地の背景を設定しています。

UIImage+Rotating

回転。反転もできます。

UIImage *image = [UIImage imageNamed:@"sample"];
image = [image rotateInDegrees:180];

実行結果

rotate

UIImage+Reflection

リフレクション(反射)を作ります。ちょっと前にすごく流行ったやつですね。

UIImage *image = [UIImage imageNamed:@"sample"];
image = [image reflectedImageWithHeight:image.size.height fromAlpha:0.0f toAlpha:0.5f];

実行結果

reflection

※ 透過していることを確認するため、グレー地の背景を設定しています。

UIImage+Enhancing

赤目補正などのような自動補正です。処理にちょっと時間がかかります。

UIImage *image = [UIImage imageNamed:@"sample"];
image = [[image autoEnhance] redEyeCorrection];

実行結果

enhance

UIImage+Saving

NYXImagesKit は編集以外にローカルストレージに保存する機能も持っています。便利ですね!

UIImage *image = [UIImage imageNamed:@"sample"];
[image saveToPhotosAlbum];

まとめ

そのままでは面倒だった処理も、OSS を使うと楽ちんですね!サンプルコードを参考に、ぜひ使ってみてください。

謝辞

画像素材はふぉとさいくさんからいただきました。ありがとうございました!