如何获得UIGraphicsGetImageFromCurrentImageContext()的NSData表示



我正在拍摄UIGraphicsBeginImageContextWithOptions(UIScreen.mainScreen().bounds.size, true, 0)中图像上下文的"快照",并最终使用

创建UIImage
var renderedImage = UIGraphicsGetImageFromCurrentImageContext()

然而,我需要在不使用UIImageJPEGRepresentationUIImagePNGRepresentation的情况下获得这个UIImage的NSData表示(因为这些产生的文件比原始UIImage大得多)。我该怎么做呢?

这些生成的文件比原来的UIImage大得多)。我该怎么做呢?

图像文件包含压缩数据,而NSData是原始的,即未压缩。因此,当写入文件时,NSData在所有情况下都会变大。

在另一个问题的更多信息:转换UIImage到NSData

我不确定你说的比原来的UIImage大得多是什么意思。支持UIImage对象的数据至少与将其转换为JPG所获得的数据一样大,并且大致相当于将其转换为PNG所获得的数据。

渲染的图像将是屏幕大小的两倍,因为您已经将视网膜屏幕渲染成图像。

您可以避免这种情况,并通过使您的图像上下文具有1的比例来渲染图像为非视网膜:

UIGraphicsBeginImageContextWithOptions(UIScreen.mainScreen().bounds.size, true, 1)

最新更新