【问题标题】:Is there any way to convert CIImage to NSData without converting CIImage to UIImage or CGImage?有什么方法可以在不将 CIImage 转换为 UIImage 或 CGImage 的情况下将 CIImage 转换为 NSData?
【发布时间】:2017-02-02 10:35:01
【问题描述】:

有什么方法可以在不将CIImage 转换为UIImageCGImage 的情况下将CIImage 转换为NSData

我正在尝试制作相机应用程序。 抓图时,我用 CIImage 处理图像,为图像赋予滤镜效果,编辑一些元数据并通过 PHAssetCreationRequest 保存。

在此过程中,我将 imagedata 更改为 CIImage,CIImage 更改为 UIImage,UIImage 更改为 NSData。显然这需要时间,我想节省一些时间。

那么,有没有什么方法可以将CIImage 转换为NSData 而无需将CIImage 转换为UIImageCGImage

【问题讨论】:

    标签: ios nsdata ciimage


    【解决方案1】:

    CIContext 有一个方法,JPEGRepresentationOfImage:colorSpace:options,可以在不转换为 UIImage 的情况下转换为 NSData。

    CIContext *contextToUse = ...;
    NSData *imageData = [contextToUse JPEGRepresentationOfImage:image colorSpace:... options:@{}];
    

    【讨论】:

    • 它有效!非常感谢。虽然,它并没有比我预期的快多少。 CIImageCGImageNSData 过程比这种方法快一点。
    • 嗯...在幕后,所有图像都只是 3d 数组。但您可能还想使用不同的 CIContext 类型进行测试。
    • 好的,我试试,非常感谢!
    • CIImage 将渲染推迟到最后一刻,并且,在您的情况下,从 CIImage 中获取数据是必须进行渲染的那一刻。
    • @TKang 你最后用了哪种方法?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-02-06
    相关资源
    最近更新 更多