MKMapView
のスクリーンショットに画像効果を適用して、私のガラスにiOS 7スタイルのガラス効果を使用しようとしています。 Appleによって提供されたThis UIImage categoryは、私がベースラインとして使用しているものです。この方法では、元画像を不飽和化する色合いの色を適用し、多額の入力ヴァルスを使用してぼかし:GPUImageを使用してiOS 7のガラス効果を再現する
[image applyBlurWithRadius:10.0
tintColor:[UIColor colorWithRed:229/255.0f green:246/255.0f blue:255/255.0f alpha:0.33]
saturationDeltaFactor:0.66
maskImage:nil];
これは私が探しています効果を発揮するが、あまりにも時間がかかり - .3
と.5
秒の間にレンダリングします私は私の予備的な試みとして優れたGPUImage
を使用したいiPhone 4
は約5〜10倍高速だったが、私はちょうどそれが右のように見えることはできません。
GPUImagePicture *stillImageSource = [[GPUImagePicture alloc] initWithImage:image];
GPUImageSaturationFilter *saturationFilter = [[GPUImageSaturationFilter alloc] init];
saturationFilter.saturation = 0.33; // 1.0 - 0.66;
[stillImageSource addTarget:saturationFilter];
GPUImageMonochromeFilter *monochromeFilter = [[GPUImageMonochromeFilter alloc] init];
[monochromeFilter setColor:(GPUVector4){229/255.0f, 246/255.0f, 1.0f, 0.33f}];
[monochromeFilter setIntensity:0.2];
[saturationFilter addTarget:monochromeFilter];
GPUImageFastBlurFilter *blurFilter = [[GPUImageFastBlurFilter alloc] init];
blurFilter.blurSize = 2;
blurFilter.blurPasses = 3;
[monochromeFilter addTarget:blurFilter];
[saturationFilter prepareForImageCapture];
[monochromeFilter prepareForImageCapture];
[stillImageSource processImage];
image = [blurFilter imageFromCurrentlyProcessedOutput];
これは近い画像を生成ではなく、かなりそこ
ぼかしが十分に深いではないようですが、私は上記のblurSize
を増やそうとしたとき、それ万華鏡のような格子状になります。 2番目の画像を拡大すると、実際にグリッドが表示されます。私が模倣しようとしている色合いは、アップルサンプルが行っていると思うオーバーレイとブレンドの代わりにイメージを洗い落とすようです。
another SO questionの@BradLarsonによるコメントに従ってフィルタを設定しようとしました。 GPUImage
フィルタを使用してこのエフェクトを再現していますか、それとも間違って設定していますか?
https://github.com/JagCesar/iOS-blurを試しましたか?それはiOS7の下でのみ動作しますが素晴らしいです。 –
iOS-Blurは実行可能なソリューションではありません。この作業をするためにリンゴが何をしているのか分かりませんし、iOS 6ではうまくいきません。 – coneybeare