从 GraphicContext 绘制图像时图像变得模糊?
Image becomes blurry when painting a Image from GraphicContext?
我在故事板中创建了一个带有 UIImageView 的 ViewController。 ImageView 设置为 Aspect Fit
并获得黄色背景色。
这是我用来测试的photo
当我 运行 我的应用程序出现的图像如下所示:
没有问题。图像看起来很清晰。现在,我在 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
}
结果如下:
从图形上下文绘制图像后,它看起来比以前模糊得多。
如何防止图像在从图形上下文中拉回时变得模糊?
可能是问题所在,图像 CGSize returns 大小以磅为单位,而不是以像素为单位。视网膜屏幕(所有仍在销售的 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
}
我在故事板中创建了一个带有 UIImageView 的 ViewController。 ImageView 设置为 Aspect Fit
并获得黄色背景色。
这是我用来测试的photo
当我 运行 我的应用程序出现的图像如下所示:
没有问题。图像看起来很清晰。现在,我在 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
}
结果如下:
从图形上下文绘制图像后,它看起来比以前模糊得多。
如何防止图像在从图形上下文中拉回时变得模糊?
可能是问题所在,图像 CGSize returns 大小以磅为单位,而不是以像素为单位。视网膜屏幕(所有仍在销售的 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
}