2015-05-22 2 views
0

Я принимаю «снимок» контекста изображения в UIGraphicsBeginImageContextWithOptions(UIScreen.mainScreen().bounds.size, true, 0) и в конечном итоге создавая UIImage используяКак получить NSData представление UIGraphicsGetImageFromCurrentImageContext()

var renderedImage = UIGraphicsGetImageFromCurrentImageContext() 

Однако мне нужно, чтобы получить представление NSData этого UIImage без использования UIImageJPEGRepresentation или UIImagePNGRepresentation (потому что они создают файлы, которые намного больше исходного UIImage). Как я могу это сделать?

+0

Какое изображение представление должно содержать NSData? – rmaddy

+0

FYI, вы можете уменьшить размер изображения, добавив еще один параметр 'UIImageJPEGRepresentation (yourImage, 0.9f)' –

+0

@rmaddy, он должен быть в jpeg. Однако я не хочу понижать качество. Если я сохраню то же изображение в фотоальбоме с помощью 'ALAssetsLibrary', размер изображения почти в 4 раза меньше, но сжатие, похоже, не произошло. – Tometoyou

ответ

0

Я не уверен, что вы подразумеваете под «способом больше», чем оригинальный UIImage. Данные, поддерживающие объект UIImage, по меньшей мере такие же большие, как данные, которые вы получили бы, путем преобразования его в JPG и примерно эквивалентны данным, которые вы получили бы, преобразов его в PNG.

Отображаемое изображение будет в два раза больше размера экрана в точках, потому что вы отобрали сетчатый экран в изображении.

Вы можете избежать этого и сделать изображение как не-сетчатки, сделав свой контекст изображения имеют масштаб 1:

UIGraphicsBeginImageContextWithOptions(UIScreen.mainScreen().bounds.size, true, 1) 
0

эти продуцировать файлы, путь больше, чем оригинальный UIImage). Как я могу это сделать?

Файлы изображений содержат сжатые данные, в то время как NSData является сырым, то есть не сжатым. Поэтому NSData во всех случаях будет больше, когда записывается в файл.

Больше информации на другой вопрос: convert UIImage to NSData

+0

Извините, я имел в виду «путь больше», чем изображение, сохраненное в фотоальбоме, используя «ALAssetsLibrary». – Tometoyou