У меня есть фрагмент кода, который загружает изображение PNG с сервера в объект UIImage
, затем проверяет правильность изображения, преобразовывая его в NSData
, хешируя содержимое NSData
и сравнивая результат к известному значению.
В псевдокоде я делаю следующее:
UIImage* image = [UIImage imageWithData:[NSData dataWithContentsofURL:<some url>]];
NSData* imageData = UIImagePNGRepresentation(image);
int dataLength = [imageData length];
... some hashing follows
Когда я запускаю этот код в имитаторе iPad 4.2, а затем на реальном устройстве iPad, иногда я получаю разные значения для «dataLength», и, следовательно, мое хеширование создает другое значение на симуляторе в отличие от устройства.
Например, у меня есть один TestImage1.png, который имеет длину 38084 байта как на устройстве, так и на симуляторе, но затем у меня есть меньшее изображение TestImage2.png, которое имеет длину 9710 байт на устройстве, но 9751 байт. на симуляторе (т.е. на 41 байт больше!).
Есть ли другой, последовательный способ для меня взять произвольный UIImage
объект и преобразовать его в поток байтов так, чтобы этот поток был идентичен как на симуляторе, так и на устройстве?