3

如何以编程方式截取屏幕截图?

4

2 回答 2

14

您可以UIGraphicsBeginImageContext用于此目的。

例如 :

UIGraphicsBeginImageContextWithOptions(self.view.bounds.size, self.view.opaque, 0.0);
[self.myView.layer renderInContext:UIGraphicsGetCurrentContext()];
UIImage*theImage = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();

NSData*theImageData = UIImageJPEGRepresentation(theImage, 1.0 ); //you can use PNG too
[theImageData writeToFile:@"example.jpeg" atomically:YES];

这里

1.首先我获取图像上下文,我已经给出了它myView是一个webview,你可以给出你想要的任何东西。这将获取可以在屏幕上看到的 webview 图像。

2使用UIGraphicsGetImageFromCurrentImageContext()我将我的 webview 的屏幕截图转换为图像。

3.通过使用UIGraphicsEndImageContext()i ask it 结束上下文。

4.我将图像保存到一个,NSData因为我不得不邮寄屏幕截图。NSData如果它用于发送或保存,则保留它似乎是一个不错的选择。

编辑:要将其添加到相机胶卷中,您需要编写:

UIImageWriteToSavedPhotosAlbum(theImage,nil,NULL,NULL);UIGraphicsEndImageContext();

于 2012-04-13T12:41:29.067 回答
1

看看这个答案。它还负责视网膜显示。

其实要解释这个过程,

  • 选择图像上下文大小(可能是您需要截屏的图层大小)
  • 在创建的上下文中渲染要截屏的图层
  • 从上下文中获取图像,你就完成了!
于 2012-04-13T12:37:21.303 回答