Как сохранить изображение, превышающее разрешение устройства в iPhone? - PullRequest
1 голос
/ 03 февраля 2012

Мой вопрос связан с этой ссылкой

Я хотел бы знать, как мы можем сохранять изображения, размер которых превышает разрешение устройства, используя CGBitmapContextCreate.

Любой пример кода для руководства будет высоко ценится.

спасибо!

1 Ответ

4 голосов
/ 03 февраля 2012

Не используйте CGBitmapContextCreate, используйте UIGraphicsBeginImageContextWithOptions, это намного проще. Используйте это так:

UIGraphicsBeginImageContextWithOptions(CGSizeMake(width, height), YES, 1.0f);
CGContextRef context = UIGraphicsGetCurrentContext();

//do your drawing

UIImage *image = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEdnImageContext();

//your resultant UIImage is now stored in image variable

Три параметра для UIGraphicsBeginImageContext:

  1. Размер изображения - это может быть что угодно

  2. Имеет ли изображение прозрачность или нет

  3. Масштаб пикселей на изображении. 0.0 - это значение по умолчанию, поэтому на iPhone 3GS это будет 1.0, а на iPhone 4 с дисплеем Retina это будет 2.0. Хотя вы можете передавать в любом масштабе, который хотите, поэтому, если вы передадите в 5.0, каждая пиксельная единица в вашем изображении будет фактически 5x5 пикселей в растровом изображении, точно так же, как 1 пиксель на дисплее Retina на самом деле составляет 2x2 пикселя на экране.

Редактировать: оказывается, что вопрос о том, является ли UIGraphicsBeginImageContext () поточно-ориентированным, кажется немного спорным. Если вам нужно сделать это одновременно в фоновом потоке, есть альтернативный (довольно более сложный подход) использование CGBitMapContextCreate () здесь: UIGraphicsBeginImageContext vs CGBitmapContextCreate

...