Blur UIImage вне границ (в стиле фотошоп)
Я пытаюсь сделать размытие по Гауссу на изображении UIImage, которое повторяет мой макет фотошопа.
Желаемое поведение: В Photoshop, когда я запускаю фильтр размытия по Гауссу, слой изображения увеличивается в результате размытых краев.
Наблюдаемое поведение: Используя GPUImage, я могу успешно размывать свои UIImages. Тем не менее, новое изображение обрезается в исходных границах, оставляя твердый край вокруг.
настройкаUIImageView.layer.masksToBounds = NO;
не помогает, так как изображение обрезается, а не вид.
Я также попытался поместить UIImage по центру на более крупное чистое изображение перед размытием, а затем изменить его размер. Это также не помогло.
Есть ли способ добиться этого размытия в стиле «фотошоп»?
ОБНОВЛЕНИЕ Рабочее решение спасибо Брэду Ларсону:
UIImage sourceImage = ...
GPUImagePicture *imageSource = [[GPUImagePicture alloc] initWithImage:sourceImage];
GPUImageTransformFilter *transformFilter = [GPUImageTransformFilter new];
GPUImageFastBlurFilter *blurFilter = [GPUImageFastBlurFilter new];
//Force processing at scale factor 1.4 and affine scale with scale factor 1 / 1.4 = 0.7
[transformFilter forceProcessingAtSize:CGSizeMake(SOURCE_WIDTH * 1.4, SOURCE_WIDTH * 1.4)];
[transformFilter setAffineTransform:CGAffineTransformMakeScale(0.7, 0.7)];
//Setup desired blur filter
[blurFilter setBlurSize:3.0f];
[blurFilter setBlurPasses:20];
//Chain Image->Transform->Blur->Output
[imageSource addTarget:transformFilter];
[transformFilter addTarget:blurFilter];
[imageSource processImage];
UIImage *blurredImage = [blurFilter imageFromCurrentlyProcessedOutputWithOrientation:UIImageOrientationUp];