iOS開発には半透明ぼかし効果を用いた整理方法があります.

3304 ワード

この文章は主にiOS上で半透明ボケ効果の開発に対して整理します.
iOSは、ボケ効果を利用した画像などの処理に早くから対応していますが、特にiOS 7以降は半透明ボケ効果が広く使われています.今年最新発表されたiOS 8もこのデザインを踏襲しており、OS X 10.10版Yosemiteeでも半透明ボケが多く使われ始めています.
iOSの開発には、半透明ボケの効果を得る選択がたくさんあります.以下は一般的な方法またはツールです.
1.Core Image
デザインと体験の指導者として、アップル自身の画像効果と画像処理へのサポートは非常に良いはずです.iOSプラットフォームでは、5.0以降にCore ImageのAPIが現れます.Core ImageのAPIはCoreImage.frame ebookライブラリに置かれている.
iOSとOS Xプラットフォームでは、Core Imageは多くのフィルタを提供しています.これもコアライブラリの一つです.公式文書によると、OS Xには120以上のFilterがあり、iOSにも90以上がある.
以下はCore Imageのぼかしの一例コードである.
 CIContext *context = [CIContext contextWithOptions:nil];
 CIImage *image = [CIImage imageWithContentsOfURL:imageURL];
 CIFilter *filter = [CIFilter filterWithName:@"CIGaussianBlur"];
 [filter setValue:image forKey:kCIInputImageKey];
 [filter setValue:@2.0f forKey: @"inputRadius"];
 CIImage *result = [filter valueForKey:kCIOutputImageKey];
 CGImageRef outImage = [context createCGImage: result fromRect:[result extent]];
 UIImage * blurImage = [UIImage imageWithCGImage:outImage];
ここで見ることができます.Core Imageは比較的柔軟にするために、Filterは文字列の名前によって作成されます.例えばガウスぼかしフィルタは「CIGaussianBlur」です.ここにリストがあります.https://developer.apple.com/library/ios/documentation/GraphicsImaging/Reference/CoreImageFilterReference/index.html#//apple_ref/doc/filter/ci/CIGaussianBlur
ここで言及した複数のFilterの他に、Core ImageはCIDetectorなどを提供しており、人の顔認識をサポートするなど、OS X上でCore Imageも多くのサポートをしています.
2.GPUImage
アップルの公式提供以外に、第三者にもこのような画像処理のツールがあります.Brad Larsonというお兄さんがGPUImageというオープンソースライブラリを作った.同じように、中には多くのFilterがあります.
https://github.com/BradLarson/GPUImage
同様にガウスぼかしをします.GPUImageでこのようにすることができます.
 GPUImageGaussianBlurFilter * blurFilter = [[GPUImageGaussianBlurFilter alloc] init];
 blurFilter.blurRadiusInPixels = 2.0;
 UIImage * image = [UIImage imageNamed:@"xxx"];
 UIImage *blurredImage = [blurFilter imageByFilteringImage:image];
少なくともコード上はCore Imageを使う場合よりずっと簡単に見える.
3.vImage
実は、上のCore ImageとGPUImageを言ったら、もう十分使う場合が多いです.次にもう一つ見に来ます.それはvImageです.vImageもアップルのライブラリです.Accellerate.frame ebookにあります.
Accellerateというフレームワークは、主にデジタル信号処理、画像処理に関するベクトル、行列演算を行うためのライブラリです.私たちの画像はすべてベクトルまたは行列データで構成されていると考えられます.Accellerateでは高い数学演算APIを提供しているので、自然に画像に対して様々な処理ができます.
vImageに基づいて、画像の処理原理に従って直接ボケ効果を作ることができます.あるいは既存のツールを使います.UImage+ImageEffectsはとても良い画像処理ライブラリで、名前を見てもUImageに対する分類拡張であることが分かります.このツールは広く使われています.
4.性能と選択
3つの方法で半透明ボケ効果があると知っていますが、私達はどれを使うべきですか?これは問題です
  • はシステムバージョンのサポートから見れば、これらはほぼすべてiOS 4、iOS 5でサポートされています.iOS 8時代の開発者にとっては、この互換性は十分です.
  • Core Imageはアップル自身の画像処理ライブラリです.もともといいです.もしアップル自身があるバージョンで最適化処理をしたら、自然にもっといいです.主に使うのが面倒で、Filterの名前も知っています.
  • GPUImageは第三者から来ましたが、開放されていて、使いやすいです.多くの場面ではCore Imageの選択によるものです.
  • 画像ぼかし処理は複雑な計算であり、最終的には性能を見ることが多い.この点から見ると、私はvImageを選ぶ傾向があります.
  • 本人が開発したiOSアプリケーションでは、vImageを選択し、出発点は性能であり、非常に正確なbenchmarkがあるとは限りません.しかし、いくつかのデバッグ時の主流機種では、5 c、5 sなどを含めて、はっきりしない半径が10ぐらいになると、アニメに合わせて、vImageの処理時間は明らかに短くなります.
    以上は本人がiOS上で半透明ボケ効果を実現した整理です.
    参考:
  • http://boboshone.com/blog/2013/04/22/blur-effect-in-ios/
  • http://nshipster.com/gpuimage/
  • http://blog.denivip.ru/index.php/2013/01/blur-effect-in-ios-applications/?lang=en
  • http://code.tutsplus.com/tutorials/adding-blur-effects-on-ios–cms-2388
  • 転載元:http://www.molotang.com/articles/1921.html