2014-11-25 40 views
2

我想以编程方式从我的应用截取屏幕截图,并且代码正常工作,但我有一个具有模糊效果的UIVisualEffectView,屏幕截图给了我无图像的图像! 我怎样才能使屏幕截图也模糊?以编程方式截图并在Swift中模糊

UIGraphicsBeginImageContextWithOptions(fullView.bounds.size, true, 1) 
self.fullView.layer.renderInContext(UIGraphicsGetCurrentContext()) 
var viewImage = UIGraphicsGetImageFromCurrentImageContext() 
UIGraphicsEndImageContext(); 
UIImageWriteToSavedPhotosAlbum(viewImage, nil, nil, nil) 

回答

1

截取屏幕截图后,可以通过编程添加模糊效果。以下是使用GPUImage库的示例,可以使用CocoaPods进行安装。使用本地Apple库也可以实现类似的效果。

GPUImagePicture *picture = [[GPUImagePicture alloc] initWithImage:snapShot]; 
GPUImageiOSBlurFilter *blurFilter = [[GPUImageiOSBlurFilter alloc] init]; 
[blurFilter setBlurRadiusInPixels:4]; 

[picture addTarget:blurFilter]; 
[blurFilter useNextFrameForImageCapture]; 
[picture processImage]; 

UIImage *processed = [blurFilter imageFromCurrentFramebuffer]; 
3

要以编程方式拍摄屏幕图像时保留UIVisualEffectView模糊,您必须拍摄整个屏幕的图像。

这里是由苹果公司提供更多的技术定义:

很多效果需要从托管 UIVisualEffectView窗玻璃支架。试图仅拍摄UIVisualEffectView的快照将导致不包含 效果的快照。要拍摄包含UIVisualEffectView的视图层次结构的快照,必须拍摄包含它的整个UIWindow或UIScreen的快照。 - Apple Documentation

+0

谢谢您的回答,有没有其他方法可以在屏幕截图中添加模糊效果,即使没有使用UIVisualEffectView? – BandarAljahmi 2014-11-25 04:41:21

+1

@BandarAljahmi我增加了一个如何以编程方式模糊图像的例子,尽管这应该是被接受的答案。 – 2014-11-25 06:14:16