2010-06-29 2 views
6

У меня есть код генерации изображений, который использует UIGraphicsBeginImageContext(), UIGraphicsGetImageFromCurrentImageContext() и UIImagePNGRepresentation(), чтобы сделать некоторый чертеж, а затем сохранить его на диск как PNG для последующего использования ,UIImagePNGRпредставление() и масштаб (экран iPhone 4)

Предоставляет ли UIImagePNGRпредставление() масштаб масштаба? Как и в случае, если у меня есть изображение шириной 20 точек, получится ли PNG 20 или 40 пикселей?

Кроме того, когда я показываю эти изображения, я использую [UIImage imageWithContentsOfFile:] и [image drawInRect:]. Есть ли способ намекнуть на эти методы для использования чертежа с более высоким разрешением?

ответ

6

согласно iPhone Application Programming Guide вы должны использовать UIGraphicsBeginImageContextWithOptions с масштабом 2,0, чтобы создать правильно масштабируются контекст для iPhone 4.

Что касается второй части вашего вопроса, то я считаю, вы должны сохранить полученные детские с @ 2x на базовое имя (например, [email protected]). Затем, когда вы загрузите его обратно с помощью UIImage, его размер и масштаб будут правильно установлены. В противном случае ваше изображение будет загружено в масштабе 1.0 и будет в два раза больше (в точках), как вы ожидаете. This section того же документа подробно описывает изображения с высоким разрешением для устройств с дисплеями с высоким разрешением.

+0

Если я создал контекст с масштабом 2.0 (скажем, это 20 точек в ширину), то когда я вызову UIImagePNGRepresentation(), получившийся PNG будет иметь ширину 40 пикселей? –

+0

Согласно моему пониманию документов, да. Хотя я признаю, что сам не пробовал. Итак, вы создаете контекст 20x20 pt при масштабном коэффициенте 2.0. Вы получаете изображение 40х40 пикселей. Вы сохраняете это как [email protected] Затем, когда вы загружаете его с UIImage, он снова будет 20x20 пунктов со шкалой 2.0. Если вместо этого вы сохраните его как просто image.png и загрузите его, вы получите изображение 40x40 pt со шкалой 1.0. –

+0

Спасибо за помощь. У меня это работает :) –

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