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];

Ответы на вопрос(0)

Ваш ответ на вопрос