как сжать изображение в iphone? - PullRequest
3 голосов
/ 19 марта 2012

Я беру изображения из библиотеки фотографий. У меня есть большие изображения размером 4-5 Мб, но я хочу сжать эти изображения. Поскольку мне нужно хранить эти изображения в локальной памяти iphone. Для использования меньшего количества памяти или для получения меньшего количества памяти Предупреждение, мне нужно сжать эти изображения.

Я не знаю, как сжимать изображения и видео. Так что я хочу знать, как сжимать изображения?

    UIImage *image = [info objectForKey:@"UIImagePickerControllerOriginalImage"];

    NSData* data = UIImageJPEGRepresentation(image,1.0);
    NSLog(@"found an image");

    NSString *path = [destinationPath stringByAppendingPathComponent:[NSString stringWithFormat:@"%@.jpeg", name]];
    [data writeToFile:path atomically:YES]; 

Это код для сохранения моего изображения. Я не хочу хранить все изображение слишком большим. Итак, я хочу сжать его до гораздо меньшего размера, так как мне нужно будет прикрепить несколько изображений.

Спасибо за ответ.

Ответы [ 3 ]

12 голосов
/ 19 марта 2012

Вы можете выбрать более низкое качество для кодирования JPEG

NSData* data = UIImageJPEGRepresentation(image, 0.8);

Что-то вроде 0,8 не должно быть слишком заметным и должно действительно улучшать размеры файлов.

Кроме того, посмотрите на изменение размера изображения перед созданием представления JPEG, используя метод, подобный этому:

+ (UIImage *)imageWithImage:(UIImage *)image scaledToSize:(CGSize)newSize {
    UIGraphicsBeginImageContext(newSize);
    [image drawInRect:CGRectMake(0, 0, newSize.width, newSize.height)];
    UIImage *newImage = UIGraphicsGetImageFromCurrentImageContext();    
    UIGraphicsEndImageContext();
    return newImage;
}

Источник: Самый простой способ изменить размер UIImage?

5 голосов
/ 19 марта 2012

UIImageJPEGRepresentation (UIImage, качество);

1,0 означает максимальное качество, а 0 означает минимальное качество.

ТАК изменить параметр качества в нижней строке, чтобы уменьшить размер файла изображения

NSData* data = UIImageJPEGRepresentation(image,1.0);
1 голос
/ 24 декабря 2014
NSData *UIImageJPEGRepresentation(UIImage *image, CGFloat compressionQuality);

OR

NSData *image_Data=UIImageJPEGRepresentation(image_Name,compressionQuality);

вернуть изображение в формате JPEG. Может вернуть ноль, если изображение не имеет CGImageRef или неверный формат растрового изображения. compressionQuality - это 0 (большинство) и 1 (минимум).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...