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