Как сохранить изображение на фотографии в iPhone без потери качества? - PullRequest
3 голосов
/ 09 марта 2010

качество сохраненного изображения будет потеряно при использовании этого метода ...

UIImage *img=imageview1.image;
UIImageWriteToSavedPhotosAlbum(img,nil,nil,nil);

Ответы [ 3 ]

6 голосов
/ 19 марта 2011

Необходимо обернуть изображение в представление PNG, чтобы оно сохранялось в библиотеке фотографий в формате PNG, а не в формате JPG.

Я использовал следующий код, основанный на коде Бена Вейса: UIImageWriteToSavedPhotosAlbum сохраняет неправильный размер и качество для параллельного сравнения.

// Image contains a non-compressed image stored within my Documents directory
UIImageWriteToSavedPhotosAlbum(image, nil, nil, nil);
NSData* imdata = UIImagePNGRepresentation ( image ); 
UIImage* im2 = [UIImage imageWithData:imdata]; 
UIImageWriteToSavedPhotosAlbum(im2, nil, nil, nil); 

Изображение будет сохранено в формате PNG в библиотеке фотографий, чтобы впоследствии к нему можно было получить доступ / поделиться им в полном качестве.

3 голосов
/ 09 марта 2010

функция


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

позволяет получить представление данных вашего изображения для ожидаемого качества сжатия (1 - лучшее).

Тогда вам просто нужно записать свои NSData в файловую систему, чтобы получить файл JPEG (например, используя writeToURL:atomically: на NSData).

То же самое можно применить к .PNG с UIImagePNGRepresentation.

Оригинальный документ: http://developer.apple.com/iphone/library/documentation/UIKit/Reference/UIKitFunctionReference/Reference/reference.html#//apple_ref/c/func/UIImageJPEGRepresentation

1 голос
/ 09 марта 2010

Я не знаю, как это сделать в SDK, но, хотя пользовательский интерфейс, если вы копируете + вставляете изображение в сообщение, он сохраняет свой полный размер. Может быть, в SDK есть такой механизм (копировать в буфер обмена)? Не знаю. Надеюсь, это даст вам представление.

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