有啥方法可以在不将 CIImage 转换为 UIImage 或 CGImage 的情况下将 CIImage 转换为 NSData?
Posted
技术标签:
【中文标题】有啥方法可以在不将 CIImage 转换为 UIImage 或 CGImage 的情况下将 CIImage 转换为 NSData?【英文标题】: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
转换为UIImage
或CGImage
的情况下将CIImage
转换为NSData
?
我正在尝试制作相机应用程序。 抓图时,我用 CIImage 处理图像,为图像赋予滤镜效果,编辑一些元数据并通过 PHAssetCreationRequest 保存。
在此过程中,我将 imagedata 更改为 CIImage,CIImage 更改为 UIImage,UIImage 更改为 NSData。显然这需要时间,我想节省一些时间。
那么,有没有什么方法可以将
CIImage
转换为NSData
而无需将CIImage
转换为UIImage
或CGImage
?
【问题讨论】:
【参考方案1】:CIContext 有一个方法,JPEGRepresentationOfImage:colorSpace:options,可以在不转换为 UIImage 的情况下转换为 NSData。
CIContext *contextToUse = ...;
NSData *imageData = [contextToUse JPEGRepresentationOfImage:image colorSpace:... options:@];
【讨论】:
它有效!非常感谢。虽然,它并没有比我预期的快多少。CIImage
到 CGImage
到 NSData
过程比这种方法快一点。
嗯...在幕后,所有图像都只是 3d 数组。但您可能还想使用不同的 CIContext 类型进行测试。
好的,我试试,非常感谢!
CIImage 将渲染推迟到最后一刻,并且,在您的情况下,从 CIImage 中获取数据是必须进行渲染的那一刻。
@TKang 你最后用了哪种方法?以上是关于有啥方法可以在不将 CIImage 转换为 UIImage 或 CGImage 的情况下将 CIImage 转换为 NSData?的主要内容,如果未能解决你的问题,请参考以下文章
如何在不将字体转换为轮廓的情况下将 cairo-pdf 转换为 eps
有啥方法可以将 Kivy 相机照片保存为 base64 而不将其导出为 png?
如何在不将 LocalDateTime 字段转换为扩展的 json 对象的情况下将 java 对象转换为简单的 json 字符串?