如何获取UIGraphicsGetImageFromCurrentImageContext()的NSData表示

时间:2015-05-22 19:37:07

标签: ios swift uiimage uigraphicscontext

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

创建UIImage
var renderedImage = UIGraphicsGetImageFromCurrentImageContext()

但是我需要在不使用UIImageJPEGRepresentationUIImagePNGRepresentation的情况下获取此UIImage的NSData表示形式(因为它们生成的文件比原始UIImage大)。我怎么能这样做?

2 个答案:

答案 0 :(得分:0)

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

渲染图像的点数将是屏幕尺寸的两倍,因为您已将视网膜屏幕渲染为图像。

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

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

答案 1 :(得分:0)

  

这些生成的文件比原始的UIImage大。)我怎么能这样做?

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

有关其他问题的更多信息:convert UIImage to NSData