将屏幕内容保存为图片时图片质量过低

iOSwwq0327 • 于 2015-10-20 00:59:16 +0800 • 最后由 iBcker2015-10-21 04:36:18 +0800 1409 阅读

我想将屏幕上的内容存为图片,然后进行分享,代码是这样的:

``` @IBAction func share(sender: AnyObject) {

    UIGraphicsBeginImageContext(backView.bounds.size)

    backView.layer.renderInContext(UIGraphicsGetCurrentContext()!)
    let image = UIGraphicsGetImageFromCurrentImageContext()
    UIGraphicsEndImageContext()

    let shareString = "\(juzi.content!)"
    let activity = UIActivity()

    let activityItems = [image, shareString]
    let activities = [activity]

    let activityController = UIActivityViewController(activityItems: activityItems, applicationActivities: activities)

    self.presentViewController(activityController, animated: true, completion: nil)


}

```

保存到相册里的图片是这样的:

file

清晰度不过,我将图片放到Mac上,发现图看的尺寸过小,只有375​x603,是过小了。

file

请教下各位,如何做才能得到质量较好的图片?

回复: 3
  • iBcker 2015-10-20 05:39:26 +0800

    scale没设置的原因(默认为1),可以尝试用UIGraphicsBeginImageContextWithOptions代替UIGraphicsBeginImageContext设置scale

    可以设置为屏幕的scale就好了·

  • wwq0327 2015-10-21 04:28:59 +0800

    @iBcker 我是这么做的:

    let scale = UIScreen.mainScreen().scale // print(scale) UIGraphicsBeginImageContextWithOptions(backView.bounds.size, true, scale)

    打印的scale的值的话,输出是2.0,这样截图就正常了。

    谢谢。

  • iBcker 2015-10-21 04:36:18 +0800

    @wwq0327 不错~

  • 请注意单词拼写,以及中英文排版,参考此页
  • 支持 Markdown 格式, **粗体**、~~删除线~~、`单行代码`, 更多语法请见这里 Markdown 语法
  • 支持表情,见 Emoji cheat sheet
  • @name 会链接到用户页面,并会通知他
  • 上传图片, 支持拖拽和剪切板黏贴上传, 格式限制 - jpg, png, gif
Ctrl+Enter