UIImageWriteToSavedPhotosAlbum сохраняет неправильный размер и качество
Я пытаюсь снять снимок экрана текущего приложения и сохранить его в фотоальбоме (чтобы потом отправить по электронной почте или отправить MMS).
UIGraphicsBeginImageContext(self.view.bounds.size);
[self.view.layer renderInContext:UIGraphicsGetCurrentContext()];
UIImage *viewImage = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();
UIImageWriteToSavedPhotosAlbum(viewImage, self, @selector(savedPhotoImage:didFinishSavingWithError:contextInfo:), nil);
Это работает, но результирующее изображение кажется большим (533x800 пикселей) и сильно сжато, когда я отправляю его по электронной почте из библиотеки фотографий.
Я пробовал сначала писать UIImage в файл, а затем сохранять в альбом, но все равно получаю ту же проблему.
Если бы я использовал встроенные функции скриншотов на iPhone, то изображение корректно сохраняется в фотоальбоме на 320x480, но приведенный выше код по какой-то причине сохраняет более крупное изображение?
Спасибо!
Ответы
Ответ 1
Я нашел подходящее обходное решение, которое должно по существу перевязать UIImage
как PNG, а затем сохранить обновленную версию. Код выглядит примерно так:
UIImage* im = [UIImage imageWithCGImage:myCGRef]; // make image from CGRef
NSData* imdata = UIImagePNGRepresentation ( im ); // get PNG representation
UIImage* im2 = [UIImage imageWithData:imdata]; // wrap UIImage around PNG representation
UIImageWriteToSavedPhotosAlbum(im2, nil, nil, nil); // save to photo album
Ответ 2
У меня была такая же ошибка, с моей стороны, которая была решена, когда я округлил десятичные точки в том же масштабе, что и iPhone, попробуйте, убедитесь, что масштаб равен 1.0, 2.0 и т.д., а не 3.1, что будет выбросьте его.