Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/96.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios 使用UIImagePngRespresentation将UIImage转换为NSData会在模拟器和实际设备上产生不同的结果_Ios_Uiimage_Nsdata - Fatal编程技术网

Ios 使用UIImagePngRespresentation将UIImage转换为NSData会在模拟器和实际设备上产生不同的结果

Ios 使用UIImagePngRespresentation将UIImage转换为NSData会在模拟器和实际设备上产生不同的结果,ios,uiimage,nsdata,Ios,Uiimage,Nsdata,我有一段代码,它将PNG图像从服务器下载到UIImage对象中,然后通过将其转换为NSData、散列NSData的内容并将结果与已知值进行比较来验证图像的正确性 在伪代码中,我将执行以下操作: UIImage* image = [UIImage imageWithData:[NSData dataWithContentsofURL:<some url>]]; NSData* imageData = UIImagePNGRepresentation(image); int dataLe

我有一段代码,它将PNG图像从服务器下载到UIImage对象中,然后通过将其转换为NSData、散列NSData的内容并将结果与已知值进行比较来验证图像的正确性

在伪代码中,我将执行以下操作:

UIImage* image = [UIImage imageWithData:[NSData dataWithContentsofURL:<some url>]];
NSData* imageData = UIImagePNGRepresentation(image);
int dataLength = [imageData length];
... some hashing follows
当我在iPad4.2模拟器上运行这段代码,然后在实际的iPad设备上运行时,有时我会得到不同的“dataLength”值,因此,我的哈希在模拟器上生成的值与设备上的值不同

例如,我有一个TestImage1.png,它在设备和模拟器上的长度都是38084字节,但是我有一个更小的图像TestImage2.png,它在设备上的长度是9710字节,但在模拟器上的长度是9751字节,即多41字节


对于我来说,是否有一种不同的、一致的方法来获取任意UIImage对象并将其转换为字节流,这样该流在模拟器和设备上都是相同的?

UIImagePngResentation确实可以在模拟器和实际设备之间产生稍微不同的结果。为了解决这个问题,我最终使用原始NSData,而根本不使用UIImage。在最初的问题中,我要处理两种情况:1从磁盘读取图像。2从URL读取图像。在这两种情况下,我都可以选择直接将位读入NSData,完全绕过UIImage,然后计算数据本身的哈希值。这解决了不一致的问题。然后你应该回答你自己的问题。