2014-01-16 2 views
-1
NSArray* paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES); 
NSString* documentsDirectory = [paths objectAtIndex:0]; 

UIImage *imageCaptured=[imagePickerInfo objectForKey:UIImagePickerControllerOriginalImage]; 

NSData *imgchekc=UIImageJPEGRepresentation(imageCaptured,1);   
NSUInteger fileLength = [imgchekc length]; 
NSLog(@"Size of Image(bytes):%d %d ",[imgchekc length],fileLength); 
  • привет, я использую этот код, чтобы получить размер изображения в байтах для ограничения пользователя загрузить> размера 5МБ изображения.
  • Но этот код дает мне 10698536 байт для изображения 4,4 МБ, которое является неправильным. Пожалуйста, скажите мне, как получить фактический размер файла.
+0

Как вы нашли 4.4MB, сохранив диск? – Wain

+0

@Wain Я пытаюсь загрузить изображение с моего симулятора на сервер, поэтому я знаю размер изображения. Если размер> 5 МБ, я хочу показать предупреждение vie, но я не получаю фактический размер файла в байтах –

+0

Какой файл? Вы не используете данные файла на диске, потому что вы используете 'UIImageJPEGRepresentation' для создания чего-то другого ... – Wain

ответ

2

Вам нужно проверить то же самое. У вас есть файл на диске, который вы загружаете в изображение. Затем вы преобразовываете это изображение в данные JPEG (с UIImageJPEGRepresentation). Эти данные теперь не имеют отношения (с точки зрения размера) к данным на диске.

Если вы хотите загрузить файл на диск, не загружайте его в изображение, а затем конвертируйте данные, просто загрузите его. Для получения размера файла вы можете использовать NSFileManager, attributesOfItemAtPath:error: и NSFileSize.

Если вы хотите конвертировать в JPEG, то ваш код в порядке, вы, вероятно, не хотите использовать 1 для compressionQuality, так как это приведет к большему объему данных. Попробуйте 0.75 и посмотрите, какая разница.

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