【问题标题】:Why is an UIImage way heavier when saved to disk than the NSData used to create it?为什么将 UIImage 保存到磁盘时比用于创建它的 NSData 重?
【发布时间】:2010-08-27 08:27:36
【问题描述】:

我在将 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 检索其数据,但我很想知道为什么使用此方法时文件大小如此之大。

有什么提示吗?

提前致谢,

埃里克。

编辑:

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

【问题讨论】:

    标签: iphone uiimage


    【解决方案1】:

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

    山姆

    PS 看看这实际上有什么不同会很有趣 - 如果你尝试一下,你也可以在这里发布结果 - 谢谢!

    【讨论】:

    • 使用 0.7,我的文件大小与从请求中收到的数据长度大致相同。这里困扰我的是下载的文件已经被 jpeg 压缩(可能是这种情况),应用新的压缩会降低已经退化的图像。
    • 你是对的,你会失去一些质量。保存 NSData 你做对了:)
    猜你喜欢
    • 2017-12-08
    • 1970-01-01
    • 2011-09-22
    • 1970-01-01
    • 2015-05-16
    • 1970-01-01
    • 2012-08-27
    • 2020-02-27
    • 1970-01-01
    相关资源
    最近更新 更多