如何从CGContextRef获得UIImage?

14

我有一个 CGContextRef 并且使用位图上下文进行了绘画操作。

现在,我想调用一个函数来获取 CGContextRefUIImage。 我该怎么做?

2个回答

32

类似于这样:

-(UIImage*)doImageOperation
{
  // Do your stuff here
  CGImageRef imgRef = CGBitmapContextCreateImage(context);
  UIImage* img = [UIImage imageWithCGImage:imgRef];
  CGImageRelease(imgRef);
  CGContextRelease(context);
  return img;
}

谢谢!有了这个,我创建了一个方便的方法UIImage* UIGraphicsGetImageFromImageContext(CGContextRef context)可以使用。 - samwize
3
如果context是CGBitmapContext,这将起作用;它可能不适用于其他任何类型的CGContext。 @samwize:您应该给它命名为不同的内容。前缀是按约定的名称空间;Apple可能随时添加一个名为“UIGraphicsGetImageFromImageContext”的函数,无论是公共的还是私有的,如果他们这样做,你的代码将会出问题。请使用您自己的前缀。 - Peter Hosey
你好 @NyxOuf,我想从 CgContextref 中获取图像,并将该图像传递到不同的 ViewController。这是可能的吗?我们该如何做?我们可以直接将这个图像传递给任何 ViewController 并在那里显示它吗?期待你的回复。 - Ranjit
我不明白。只需向您的VC添加一个属性即可。 @property (strong) UIImage* img; - Nyx0uf

9

这是一个与Swift 3相关的方便函数,它接收一个CGContext并返回一个UIImage。请注意在Swift 3中使用完上下文后无需再释放它。

func imageFromContext(_ context: CGContext) -> UIImage? {
    guard let cgImage = context.makeImage() else { return nil }
    return UIImage.init(cgImage: cgImage)
}

是的,这是我以前一直使用的。今天尝试了一下,结果图片倒过来了。 - Ash

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接