我正在为 iPhone 应用程序编写图像编辑器。我使用GPUImage 库在画布上呈现精灵的图像(在 GPUImageView 上)。我使用以下方法获取画布的屏幕截图:
@implementation UIView (SnapshotImage)
// Return a snapshot image of this view
- (UIImage*)snapshot{
UIGraphicsBeginImageContextWithOptions(self.bounds.size,YES,0.0f);
CGContextRef context = UIGraphicsGetCurrentContext();
// In iOS 7, you can use the following instead of `-renderInContext:`. It should be faster.
// [self drawViewHierarchyInRect:self.bounds afterScreenUpdates:YES];
[self.layer renderInContext:context];
UIImage *capturedImage = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();
return capturedImage;
}
@end
在我用这种方法得到关键窗口的整个截图后,画布的字段是空的(没有任何精灵的图像)。
UIView *keyWindow = [[UIApplication sharedApplication] keyWindow];
UIImage *snapshotIamge = [keyWindow snapshot];
// Present the image on the view...
我认为获取包含 GPUImageView(s) 的视图的屏幕截图存在问题,该视图使用OpenGLES渲染图像而不是Quartz。如何获取包含 GPUImageView 的视图的屏幕截图?
并且在截屏时是否可以获得具有特定 CGRect 的裁剪图像(如cmd + shift + 4
在 Mac 上)?