2013-08-03 2 views
11

настоящее время я использую UIGraphicsGetImageFromCurrentImageContext(), чтобы сохранить изображение содержание на Фотопленка пользователя, но качество изображения хуже, чем если бы я сделать снимок экрана в симуляторе. Есть ли способ улучшить его? И в каком формате сохраняется сохраненное изображение? Bmp? Есть ли способ изменить это?Лучшее качество изображения из UIGraphicsGetImageFromCurrentImageContext()

Вот мой сохранить код:

CGSize size = [content bounds].size; 
UIGraphicsBeginImageContext(size); 
[[content layer] renderInContext:UIGraphicsGetCurrentContext()]; 
UIImage *originalImage = UIGraphicsGetImageFromCurrentImageContext(); 
UIGraphicsEndImageContext(); 

UIImageWriteToSavedPhotosAlbum(originalImage, self, @selector(image:didFinishSavingWithError:contextInfo:), nil); 
+0

насколько велик ваш "' size'"? если это не так уж и больно, тогда ваше разрешение будет довольно бедным. –

+0

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

ответ

36

Вместо использования UIGraphicsBeginImageContext вы должны использовать:

UIGraphicsBeginImageContextWithOptions(size, NO, 0); 
+0

Он работает! Как насчет типа файла сохранения? –

+0

Я считаю, что он сохраняет как jpg. – Wain

+0

Это просто делает изображение рендерингом с правильным conrentscale. 0 является значением по умолчанию (равным '[UIScreen mainscreen] scale'). Чтобы сохранить JPG или PNG, используйте представление UIImageJPGR или представление UimagePNGR на полученном изображении. –

0

Если вы на сетчатке отображать размер контекста только половина размера «реального» изображения.

Попробуйте удвоить размер (или для правильного использования contentScaleFactor представления).

+0

Да, это проблема. Как использовать contentScaleFactor для увеличения выходного изображения? –

+0

Точно так же: size.width * = [[content layer] contentsScale]; size.height ... – Tom

Смежные вопросы