在iPhone应用程序中,我使用标准HTTP请求从服务器加载JPG图像。数据以NSData形式返回,我可以使用[UIImage imageWithData:responseData]
函数将其转换为UIImage。我的问题是,我可以将我的图像的UIImage表示转换回它源自的相同NSData吗?我知道UIImageJPEGRepresentation()
函数,但我尝试使用compressionQuality为1,这给了我一些与原始NSData不同的东西。
答案 0 :(得分:3)
我认为(实际上是猜测)你的问题可能是因为UIImage内部没有以JPEG格式存储。由于JPEG压缩的工作方式,转换回JPEG的可能性不太可能为您提供完全相同的数据。你有什么理由不能保持原始NSData的存在吗?
答案 1 :(得分:2)
您应该使用UIImagePNGRepresentation(),并将文件作为PNG发送到设备。 PNG在设备上加载和保存效率更高。这是将一个字节数组(NSData)转换为图像的standard method。
如果您遇到JPEG数据,UIImageJPEGRepresentation()是将其恢复为NSData对象的正确方法。它可能不完全相同,取决于Apple如何实现该方法,它可以更新一些数据,而技术上仍然是相同的图像(会呈现相同的)。