Próbuję użyć efektu szkła w stylu iOS 7 w moim szkle, stosując efekty obrazu do zrzutu ekranu MKMapView
. This UIImage category, dostarczone przez Apple, jest tym, co używam jako linii bazowej. Metoda ta desaturacji obrazu źródłowego, zastosowanie koloru odcień, i zaciera mocno wykorzystaniem wejściowych Vals:Używanie GPUImage do odtworzenia efektu szkła 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];
to daje efekt szukam, ale trwa zbyt długo - między .3
i .5
sekund do renderowania na iPhone 4.
chciałbym użyć jako doskonałą GPUImage
moich wstępnych prób były około 5-10 razy szybciej, ale ja po prostu nie wydają się uzyskać to prawo.
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];
Daje to obraz, który jest blisko, ale nie całkiem tam
Rozmycie nie wydaje się być na tyle głęboki, ale gdy próbuję zwiększyć blurSize
powyżej, staje się siatkowy, prawie jak kalejdoskop. Możesz zobaczyć siatkę tutaj, powiększając drugi obraz. Odcień koloru, który próbuję naśladować, wydaje się po prostu zmywać obraz zamiast nakładania i mieszania, co, jak sądzę, robi próbka Apple.
Próbowałem ustawić filtry według komentarzy wysłanych przez @BradLarson w another SO question. Czy używam niewłaściwych filtrów GPUImage
do odtworzenia tego efektu, czy też po prostu źle je ustawiam?
Czy próbowałeś https://github.com/JagCesar/iOS-blur? Jest świetny, chociaż działa tylko w systemie iOS7. –
iOS-Blur nie jest realnym rozwiązaniem. Nie wiesz, co robi jabłko pod maską, aby to zadziałało, i nie działa na iOS 6. – coneybeare