我尝试将GPUImageMotionBlurFilter
应用于UIView
的快照。我也想模糊视图的顶部和底部边缘,因此我在传递给insetY
的矩形上方和下方留下了一个透明空间(drawViewHierarchyInRect:afterScreenUpdates:
)。 GPUImage似乎忽略了透明度,并且表现得像是填充了比-lightGrayColor
轻一点的颜色。
这是我的代码(它在UIView
子类中的方法中):
CGFloat insetX = 0;
CGFloat insetY = 10;
CGRect snapshotFrame = CGRectInset(self.bounds, -insetX, -insetY);
UIGraphicsBeginImageContextWithOptions(snapshotFrame.size, NO, 0.0f);
[self drawViewHierarchyInRect:CGRectMake(insetX, insetY, CGRectGetWidth(self.frame), CGRectGetHeight(self.frame)) afterScreenUpdates:YES];
UIImage *snapshotImage = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();
GPUImageMotionBlurFilter *motionBlurFilter = [[GPUImageMotionBlurFilter alloc] init];
motionBlurFilter.blurAngle = 90;
motionBlurFilter.blurSize = 20.0f;
UIImage *blurredImage = [motionBlurFilter imageByFilteringImage:snapshotImage];
这就是我得到的:
snapshotImage
:
blurredImage
:
我正在尝试做什么?