为什么UIImage在保存到磁盘时比用于创建它的NSData更重?

时间:2010-08-27 08:27:36

标签: iphone uiimage

我在从文件中保存一个UIImage时遇到问题,该UIImage是从HTTP请求收到的数据中实现的:文件是巨大的,比HTTP请求返回的数据大的重。

例如,从给定的URL下载图像时,检索的数据长度约为1.2MB。然后我用...来实现我的UIImage。

UIImage *myImage = [UIImage imageWithData:responseData];

...然后将图像保存到磁盘:

NSData *imageData = UIImageJPEGRepresentation(myImage, 1.0);

[imageData writeToFile:filePath atomically:YES];

生成的文件重量约为5MB!

我知道我可以将收到的数据保存到文件中,而不是首先实现UIImage,然后使用UIImageJPEGRepresentation检索其数据,但我很想知道为什么文件大小在使用这种方法时会如此巨大。 / p>

任何提示?

先谢谢,

埃里克。

编辑:

我可以确认将响应数据保存到文件而不是首先实现UIImage解决问题并生成大小与数据大小相同的文件。不过,我想知道为什么从UIImage中保存时尺寸变化如此之大......

1 个答案:

答案 0 :(得分:1)

我只能假设您的特定图像的jpeg效率低于原始数据 - 这可能是因为您将质量设置为1.0 - 尝试将质量参数设置为较低的数字(0.7很好恕我直言)并查看文件大小下降:)

萨姆

PS看看这实际上有什么区别会很有趣 - 如果你尝试它也可以在这里发布结果 - 谢谢!