首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >二进制存储和检索NSImage的最佳实践

二进制存储和检索NSImage的最佳实践
EN

Stack Overflow用户
提问于 2016-01-09 10:16:47
回答 1查看 514关注 0票数 2

我正在使用NSImage,并希望将它们存储在Core Data二进制对象中。我可以正常工作,但我阅读了许多使用NSImageRep来实现此操作的不同方法。目前,我正在做以下工作:

从图像创建二进制数据

代码语言:javascript
复制
- (NSData *)createBinaryWithImage:(NSImage *)image {
    return [image TIFFRepresentation];
}

从二进制数据创建图像

代码语言:javascript
复制
- (NSImage *)createImageWithBinaryData:(NSData *)binaryData {
    return [[NSImage alloc] initWithData:binaryData];
}

这是一种可以接受和有效的方式,还是有更好的方法?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-01-09 15:01:44

如果你只是想自己往返的话,我通常会使用TIFFRepresentation。这正是NSImage喜欢使用的地方,而且通常不需要任何昂贵的转换步骤。它很接近“扔掉我们这里的东西”。如果您不知道数据是压缩的还是未压缩的,这就特别好了,因为它可以在本地处理。

通常,如果您想在保存之前检查或操作像素,则转换为NSBitmapImageRep,然后从那里转换为其他格式(使用representationUsingType:properties:)是很有价值的。但我不认为我会创建一个图像代表只是为了把它转换成数据。NSImage的全部要点是管理一组NSImageRep并为每个目的选择合适的一组。你应该让它来处理这部分。

现在PNG比TIFF更受欢迎,所以如果您在自己的数据存储之外编写文件,那么PNG将是一个更常见的选择(您需要通过NSImageRep才能达到这个目的)。当然,JPEG是一个完全不同的东西,因为它是有损的,所以很少被用于任何东西,除了导出。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/34692226

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档