【iOS開発 TIPS】iOS5のCIImage、CIFilterを試してみたよ。

2013/04/15
CATEGORY : objective-c , 天一以外
このエントリーをはてなブックマークに追加

どうもみなさまこんばんわ。お前のものはお前のもの、シブタニエイジ(@EijiShibutani)です。

こないだ「iOS Dev ハッカソン 関西」ってに参加しまして、そこでちょこちょこいじったCore ImageフレームワークのCIImage、CIFilterについて書きたいと思います。

ちぇっけなー。

CIImage、CIFilterって何よ?

iOS5 からCoreImageフレームワークが追加されました。その中に画像にエフェクトを簡単にかけられる機能があるんですね。

iOS5 っていうくらいだからすんごい昔のテクニックなんだけど、当時はまだiOS4使用率が高かったもんでスルーしてましたが、さすがにもういねーだろってことでこれからちょこちょこ使っていこうと思います。

ちなみに公式ドキュメント等はこちら。

使い方はこんな感じ

まずは【Link Binary With Libraries】に【CoreImage.framework】を追加してください。

んで、ファイルをインクルード。

#import <CoreImage/CoreImage.h>

これで準備は完了です。

で、画像をモノクロに変換するコードがこちら。

CIImage *ciImage = [[CIImage alloc] initWithImage:[UIImage imageNamed:@"xxxx.png"]]; //変換する画像ファイル名
        CIFilter *ciFilter = [CIFilter filterWithName:@"CIColorMonochrome" //フィルター名
                                        keysAndValues:kCIInputImageKey, ciImage,
                              @"inputColor", [CIColor colorWithRed:0.75 green:0.75 blue:0.75], //パラメータ
                              @"inputIntensity", [NSNumber numberWithFloat:1.0], //パラメータ
                              nil
                              ];
        CIContext *ciContext = [CIContext contextWithOptions:nil];
        CGImageRef cgimg = [ciContext createCGImage:[ciFilter outputImage] fromRect:[[ciFilter outputImage] extent]];
        UIImage* monochroImage = [UIImage imageWithCGImage:cgimg scale:1.0f orientation:UIImageOrientationUp];
        CGImageRelease(cgimg);

たったこれだけでモノクロに変換できちゃう!素敵!!

これを使用すれば、例えばゲームの「ゲームオーバー時」などで画面をモノクロにするなど、リッチな演出を簡単に加えることができちゃいますね。

新作鋭意制作中

例えばこんな感じ。まじゲームオーバー感。

当然、モノクロだけじゃなくて色々簡単に画像にエフェクトをかけられます。
以下参考にさせていただいた文献。あざます!!

え?なに?上の画像はなんだって?

おいおいおいー。やめろよー。詮索するなよー。おいー。今作ってるアp … おいおいー。やめろってー。

コホン。以上です。チャオ!

今日の一言

まじかー!こんなんあったんかー!スミヒロさんからリプいただきました。なんかこっちの方が色々できそうな予感。でも文献少ないんだよなー。今度じっくりいじってみよう。

コメント

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

*

次のHTML タグと属性が使えます: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>

© 2013 THE AGE