将 CIImage 渲染为 JPEG 的最快方法?

Fastest way to render CIImage to JPEG?

我有一个 CIFilter 管道。

它目前输出 UIImage 使用:

private func renderImage(ciImage: CIImage) -> UIImage?
{
    let cgImage = Filter.context.createCGImage(ciImage, from: ciImage.extent)

    return cgImage.map(UIImage.init)
}

UIImage 稍后转换为 JPEG 并存储。

现在有批量过滤图像并跳过 UIImage 格式的需求。这需要尽快完成。

有几种方法可以做到这一点。

哪种方式最快?

您也可以使用 CIContext 来做到这一点:

let colorSpace = CGColorSpace(name: CGColorSpace.sRGB)!
// if you need the JPEG data
let data = Filter.context.jpegRepresentation(of: ciImage, colorSpace: colorSpace)
// or if you want to write to file directly
try Filter.context.writeJPEGRepresentation(of: ciImage, to: url, colorSpace: colorSpace)