Iphone NSData到UIImage转换的逆运算?

Iphone NSData到UIImage转换的逆运算?,iphone,objective-c,uiimage,nsdata,uiimagejpegrepresentation,Iphone,Objective C,Uiimage,Nsdata,Uiimagejpegrepresentation,在iPhone应用程序中,我使用标准HTTP请求从服务器加载JPG图像。数据以NSData的形式返回,我可以使用[UIImage imageWithData:responseData]函数将其转换为UIImage。我的问题是,我能否将图像的UIImage表示形式转换回其来源的相同NSData?我知道UIImageJPEGRepresentation()函数,但我尝试了压缩质量为1的函数,这给了我一些与原始NSData不同的东西。您应该使用uiImagePngResentation(),并将文件作

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

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


如果您一直使用JPEG数据,UIImageJPEGRepresentation()是将其返回到NSData对象的正确方法。它可能不同,这取决于苹果如何实现该方法,它可以在技术上仍然是相同图像的情况下更新一些数据(渲染相同)。

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

我同意。。但不幸的是,我在web服务器上的源代码是JPEG,我想将UIImage转换回与最初下载的相同的NSData表示形式。我相信您是对的,创建的JPEG不完全相同,但这就是问题所在。我担心有损压缩的复杂性。我认为唯一的解决方案是存储NSData,我现在正在这样做。谢谢你的回复。我想这个问题类似于用PhotoShop重复打开和保存JPG。有损压缩复合,你永远不会有相同的图像。不想保留NSData的原因是为了CoreData的性能(将其存储为BLOB)。然而,我刚刚遇到了一个问题的解决方案。谢谢你的意见。