のスクリーンショットに画像効果を適用して、ガラスで iOS 7 スタイルのガラス効果を使用しようとしていMKMapView
ます。Apple が提供するこの UIImage カテゴリは、私がベースラインとして使用しているものです。このメソッドは、ソース イメージの彩度を下げ、ティント カラーを適用し、入力値を使用して大幅にぼかします。
[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];
これにより、探している効果が得られますが、iPhone 4 でレンダリングするには時間がかかりすぎ.3
ます。.5
私の予備的な試みは約5〜10倍高速だったので、エクセレントを使用したいと思いますGPUImage
が、うまくいかないようです。
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 番目の画像を拡大すると、グリッドが実際に表示されます。私が模倣しようとしている色合いは、Apple のサンプルが行っていると思われるオーバーレイやブレンドではなく、画像を洗い流すだけのようです。
@BradLarson が別の SO questionで行ったコメントに従って、フィルターをセットアップしようとしました。この効果を再現するために間違ったGPUImage
フィルターを使用していますか、それともフィルターの設定が間違っているだけですか?