2013-06-03 3 views
2

Я хочу загрузить изображение размером до 8 мб. поэтому для тестирования я добавил изображение в мою фотогалерею размером 4.2 мб (размер: 3264 X 2443). Но когда я собираю этот образ для загрузки, я проверил размер изображения. Но он возвращает 9840076 байт, то есть 9,3842 мб, что в действительности составляет 4,2 мб. Таким образом, изображение размером 4.2 мб не может загружаться.iOS возвращает изображение с разным размером?

Я использовал ниже метод для вычисления размера изображения, и это возвращает 9840076 байт.

[UIImageJPEGRepresentation(imageRerurnedFromPhotoGallery , 1.0) length]; 

Я делаю что-то неправильно при расчете размера изображения? Пожалуйста, предложите мне правильный путь. Спасибо заранее!

+1

Я не понимаю этого: «он возвращает 9840076 байт, то есть 9,3842 мб, что составляет 4,2 мб в реальном времени». – bdesham

+0

он говорит, что размер изображения составляет 4,2 МБ, но по этому коду он получает 9,3 МБ, что неверно –

ответ

0

Почему вы не пытаетесь это сделать?

вы получите размер в байтах

NSData *data = [[NSData alloc] initWithData:UIImageJPEGRepresentation((Your Image), 0.5)]; 

int imageSize = data.length; 
NSLog(@"size of image is: %i ", imageSize); 
+0

'UIImageJPEGRepresentation (..)' будет возвращать экземпляр NSData, который возвращает длину в байтах. Об этом уже упоминалось ОП в вопросе. В приведенном выше коде вы фактически дублируете данные в формате 4.2MB в памяти, которая не нужна. Только изменение у вас: 'JPEG quality = 0.5', который уменьшит пиксели изображения. – Amar

+0

да, вы правы –

0

Вы декодирования и затем повторного кодирования изображения, поэтому размер файла может отличаться. Если вам вообще не нужно изменять изображение, используйте ALAssetsLibrary, чтобы получить изображение как объект NSData, а не объект UIImage. Затем, когда вы посмотрите на NSDatalength, размер файла будет точно соответствовать. См. Using ALAssetsLibrary and ALAsset take out Image as NSData для примера кода.

Смежные вопросы