Ich versuche den Glaseffekt im Stil von iOS 7 in meinem Glas zu verwenden, indem ich Bildeffekte auf einen Screenshot von MKMapView
anwende. This UIImage category, von Apple zur Verfügung gestellt, ist, was ich als Grundlinie verwende. Diese Methode entsättigt das Quellbild, gilt eine Tönung Farbe und verwischt mit stark dem Eingang vals:Verwenden von GPUImage zum Wiederherstellen von iOS 7 Glass Effect
[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];
Dies bewirkt produziert ich suche, aber dauere viel zu lang - zwischen .3
und .5
Sekunden machen auf ein iPhone 4.
ich mag würde die ausgezeichnete GPUImage
als meine ersten Versuche verwenden, haben etwa 5-10 mal schneller gewesen, aber ich kann einfach nicht scheinen, richtig zu machen.
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];
Dies erzeugt ein Bild, das nahe ist, aber nicht ganz da
Die Unschärfe scheint nicht tief genug zu sein, aber wenn ich versuche, über die blurSize
zu erhöhen, wird gitterartig, fast wie ein Kaleidoskop. Sie können das Raster hier sehen, indem Sie das zweite Bild vergrößern. Die Tönungsfarbe, die ich nachzuahmen versuche, scheint nur das Bild auszuwaschen, anstatt zu überlagern und zu mischen, was ich denke, dass das Apple-Sample es tut.
Ich habe versucht, die Filter nach den Kommentaren von @BradLarson in another SO question einrichten. Verwende ich die falschen GPUImage
Filter, um diesen Effekt zu reproduzieren, oder richte ich sie nur falsch ein?
Haben Sie versucht https://github.com/JagCesar/iOS-blur? Es ist großartig, obwohl es nur unter iOS7 funktioniert. –
iOS-Blur ist keine praktikable Lösung. Sie wissen nicht, was Apple unter der Haube tut, um dies zu machen, und es funktioniert nicht auf iOS 6. – coneybeare