изменение размера изображения iphone - PullRequest
0 голосов
/ 30 января 2012

У меня есть сомнения по поводу изменения размера изображений в моем приложении для iPhone. Таким образом, пользователь делает снимок или выбирает его из галереи, а затем этот снимок отправляется на сервер. У меня уже есть код от этого ответа , чтобы изменить размер картинки:

UIImage * small=[self imageByScalingToSize:CGSizeMake(150,150) img:image];

Размер только пример.

Я отправляю маленький серверу, но мне нужно учесть следующие вещи:

  • Изображение должно быть меньше или равно 150 килобайтам, а
  • Я прочитал здесь , что когда пользователь отправляет изображения через 3G, iphone автоматически изменяет размер изображения до (800 600).

Итак, я хотел бы изменить размер изображения до (800 600) (эта часть у меня уже есть), а затем проверить, не превышает ли оно 150 КБ, и каким-то образом уменьшить его, если оно есть.

Есть ли способ рассчитать количество байтов изображения, зная размер и, возможно, некоторые другие данные?
Как я могу добиться такого уменьшения размера с помощью размера файла?

Ответы [ 2 ]

1 голос
/ 30 января 2012

Как вы загружаете свое изображение.Вам просто нужно отправить байтовые данные, iOS не будет знать, что это изображение, и не сможет изменить его размер!Вы смотрели на использование чего-то вроде

NSData *imageData = UIImageJPEGRepresentation(myUIImage, compressionQuality);

, чтобы сжать изображение и изменить его размер.Это даст вам объект NSData, который вы можете закодировать с помощью base64 и отправить на ваш сервер.Также сформируйте NSData, чтобы узнать, насколько велико изображение в байтах, и определите, достаточно ли оно маленькое.

Надеюсь, это поможет.:)

1 голос
/ 30 января 2012

преобразует ваш UIImage в NSData и длину пользователя, чтобы получить размер изображения в байтах.

из документации Apple:

length - возвращает количество байтов, содержащихся вприемник.

Вы можете конвертировать UIImage, используя

NSData * UIImagePNGRepresentation ( UIImage *image );

или

NSData * UIImageJPEGRepresentation ( UIImage *image, CGFloat compressionQuality );
...