2015-04-20 10 views
1

Я создал ViewController с UIImageView в раскадровке. ImageView установлен в Aspect Fit и получает желтый цвет фона.Изображение становится размытым при рисовании изображения из GraphicContext?

Вот photo Я использовал для испытания.

Когда я запускаю мое приложение появляется изображение будет показано ниже:

enter image description here

Там нет никаких проблем. Изображение выглядит резким. Теперь я сделал следующее в моем viewDidLoad методе:

@IBOutlet weak var imageView: UIImageView! 

    override func viewDidLoad() { 
    super.viewDidLoad() 

    UIGraphicsBeginImageContext(imageView.image!.size) 
    imageView.image!.drawInRect(CGRectMake(0, 0, imageView.image!.size.width, imageView.image!.size.height)) 

    var drawedImage = UIGraphicsGetImageFromCurrentImageContext() 
    UIGraphicsEndImageContext() 
    imageView.image = drawedImage 
    } 

Вот результат:

enter image description here

После нанесения изображения из графического контекста оказывается гораздо более размыто, чем раньше.

Как предотвратить размытие изображений при рисовании из графического контекста?

+0

Попробуйте использовать UIGraphicsBeginImageContextWithOptions. См. Http://stackoverflow.com/questions/4334233/how-to-capture-uiview-to-uiimage-without-loss-of-quality-on-retina-display. – Anna

ответ

5

В чем может быть проблема, заключается в том, что изображение CGSize возвращает размер в точках, а не в пикселях. Сетчатые экраны сетчатки (в настоящее время это почти все экраны iDevice).

Попробуйте умножения на экран масштабирования коэффициента или установить его в 0, чтобы определяться автоматически (по умолчанию 1):

@IBOutlet weak var imageView: UIImageView! 

override func viewDidLoad() { 
    super.viewDidLoad() 

    UIGraphicsBeginImageContext(imageView.image!.size, imageView.opaque, 0.0) 

    imageView.image!.drawInRect(CGRectMake(0, 0, imageView.image!.size.width, imageView.image!.size.height)) 

    var drawedImage = UIGraphicsGetImageFromCurrentImageContext() 
    UIGraphicsEndImageContext() 
    imageView.image = drawedImage 
} 
+0

Вы имеете в виду использование '' UIGraphicsBeginImageContextWithOptions (imageView.image! .size, false, 0.0) '' или мне следует умножить ширину и высоту размера по шкале scree? – confile

+0

Первый из них :) Отредактирован ответ, чтобы показать пример –