Я пытаюсь использовать эффект стекла в стиле iOS 7 в своем стекле, применяя эффекты изображения к скриншоту MKMapView
. This UIImage category, предоставленный Apple, является тем, что я использую в качестве базовой линии. Этот метод уменьшает насыщенность исходного изображения, применяет оттенок цвета, и стирает сильно используя входные Vals:Использование 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
секундой, чтобы вынести на iPhone 4.
Я хотел бы использовать отличную GPUImage
как мои предварительные попытки были приблизительно в 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
выше, становится сетчатым, почти как калейдоскоп. Вы можете увидеть сетку здесь, увеличив изображение на втором изображении. Цвет оттенка, который я пытаюсь подражать, кажется, просто вымывает изображение вместо наложения и смешивания, которые, по моему мнению, делают образец Apple.
Я попытался настроить фильтры в соответствии с комментариями, сделанными @BradLarson в another SO question. Использую ли я неправильные фильтры GPUImage
, чтобы воспроизвести этот эффект, или я просто устанавливаю их неправильно?
Вы пробовали https://github.com/JagCesar/iOS-blur? Это здорово, хотя работает только под iOS7. –
iOS-Blur не является жизнеспособным решением. Вы не знаете, что яблоко делает под капотом, чтобы сделать эту работу, и это не работает на iOS 6. – coneybeare