уменьшить размер изображения с iPhone при загрузке - PullRequest
1 голос
/ 09 августа 2009

У меня есть приложение, в котором

Пользователь выбирает изображения с iPhone, для поля фотографии,

Изображение загружено на сервер,

Размер изображения может составлять 1 КБ или 10 КБ или 1 МБ или 10 МБ.

Если размер изображения превышает 5 МБ, его необходимо уменьшить до 5 МБ перед сохранением на сервере. Вопрос: Как? Возможно ли это?

Я использовал следующий код для загрузки изображения - для сжатия изображения во время загрузки,
imageDatafromPhoto = UIImageJPEGRepresentation ([info objectForKey: @ "UIImagePickerControllerOriginalImage"], 0.2);

Спасибо за помощь.

1 Ответ

1 голос
/ 09 августа 2009

Существует разница между «сжатием» и «повторной выборкой». Сжатие - это способ уменьшить размер документа, например GZip. Хотя в Objective-C нет никаких стандартных интерфейсов, чтобы помочь вам в этом, есть несколько расширений для NSData как категории, которую вы можете использовать для добавления сжатия GZip.

Однако это само по себе не поможет. Изображения JPEG, как правило, плохо сжимаются, поэтому вам действительно нужно ресэмплинг или настройка самого изображения. Это отбрасывает некоторые данные, делая их меньше, но и хуже по качеству. Это цель 0.2 в конце - 0.0 - это максимальное сжатие, которое вы можете получить из библиотеки. Вы можете пытаться вызывать его с помощью постоянно небольших чисел (скажем, в цикле for), пока не получите размер изображения приемлемого качества.

Если это не удастся, вам придется изменить размер, нарисовав изображение в CGContextDrawImage с указанным размером в буфере CG (из CGBitmapContextCreate), а затем получить новое изображение из полученного результата и начать заново.

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