反转NSData到UIImage的转换?

时间:2011-06-27 16:33:55

标签: iphone objective-c uiimage nsdata uiimagejpegrepresentation

在iPhone应用程序中,我使用标准HTTP请求从服务器加载JPG图像。数据以NSData形式返回,我可以使用[UIImage imageWithData:responseData]函数将其转换为UIImage。我的问题是,我可以将我的图像的UIImage表示转换回它源自的相同NSData吗?我知道UIImageJPEGRepresentation()函数,但我尝试使用compressionQuality为1,这给了我一些与原始NSData不同的东西。

2 个答案:

答案 0 :(得分:3)

我认为(实际上是猜测)你的问题可能是因为UIImage内部没有以JPEG格式存储。由于JPEG压缩的工作方式,转换回JPEG的可能性不太可能为您提供完全相同的数据。你有什么理由不能保持原始NSData的存在吗?

答案 1 :(得分:2)

您应该使用UIImagePNGRepresentation(),并将文件作为PNG发送到设备。 PNG在设备上加载和保存效率更高。这是将一个字节数组(NSData)转换为图像的standard method

如果您遇到JPEG数据,UIImageJPEGRepresentation()是将其恢复为NSData对象的正确方法。它可能不完全相同,取决​​于Apple如何实现该方法,它可以更新一些数据,而技术上仍然是相同的图像(会呈现相同的)。