从GraphicContext绘制图像时图像变得模糊?

con*_*ile 4 objective-c cgimage ios uigraphicscontext swift

我在故事板中创建了一个带有UIImageView的ViewController.ImageView设置为Aspect Fit并获得黄色背景颜色.

这是我用于测试的照片.

当我运行我的应用程序时,显示的图像如下所示:

在此输入图像描述

没有问题.图像看起来很清晰.现在我在我的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
  }
Run Code Online (Sandbox Code Playgroud)

结果如下:

在此输入图像描述

从图形上下文中绘制图像后,它看起来比以前更加模糊.

从图形上下文中回退时,如何防止图像变得模糊?

Kev*_*n R 11

可能是问题的是,图像CGSize以点为单位返回大小,而不是以像素为单位.Retina屏幕(所有仍在销售的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
}
Run Code Online (Sandbox Code Playgroud)