Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/objective-c/25.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios 从GraphicContext绘制图像时图像变得模糊?_Ios_Objective C_Swift_Cgimage_Uigraphicscontext - Fatal编程技术网

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

Ios 从GraphicContext绘制图像时图像变得模糊?,ios,objective-c,swift,cgimage,uigraphicscontext,Ios,Objective C,Swift,Cgimage,Uigraphicscontext,我在情节提要中创建了一个带有UIImageView的ViewController。ImageView设置为Aspect Fit,并获得黄色背景色 这是我用来做测试的 当我运行我的应用程序时,图像显示如下: 没问题。图像看起来很清晰。现在,我在我的viewDidLoad方法中执行了以下操作: @IBOutlet weak var imageView: UIImageView! override func viewDidLoad() { super.viewDidLoad()

我在情节提要中创建了一个带有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
  }
结果如下:

从图形上下文中绘制图像后,图像看起来比以前模糊得多


如何防止图像在从图形上下文中提取时变得模糊?

可能的问题是,图像CGSize返回的是以点为单位的大小,而不是以像素为单位的大小。视网膜屏幕(所有仍在销售的iDevice屏幕)每点有多个像素

尝试乘以屏幕比例因子或将其设置为0以自动确定(默认值为1):


尝试使用UIGraphicsBeginImageContextWithOptions。请参见。您的意思是使用
UIGraphicsBeginImageContextWithOptions(imageView.image!.size,false,0.0)
还是我应该将大小宽度和高度乘以屏幕比例?第一个:)编辑答案以显示示例为我工作谢谢:)
@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
}