objective-c – 将专有二进制映像文件加载到NSImage的推荐方法?

objective-c – 将专有二进制映像文件加载到NSImage的推荐方法?,第1张

概述我有一堆专有二进制格式的图像文件,我想加载到NS Images中.格式不是简单的位图,而是一种与透明度和其他附加信息混合的RLE表示. 为了在Cocoa应用程序中显示其中一个图像,我需要一种逐字节解析图像文件的方法,并从中“计算”一个位图,然后将其放入NSImage中. 在Objective-C/C++ocoa中执行此 *** 作的好方法是什么? 解释图像数据的任务由图像的表示对象处理.要使用专有格式,您 我有一堆专有二进制格式的图像文件,我想加载到NS Images中.格式不是简单的位图,而是一种与透明度和其他附加信息混合的RLE表示.

为了在Cocoa应用程序中显示其中一个图像,我需要一种逐字节解析图像文件的方法,并从中“计算”一个位图,然后将其放入NSImage中.

在Objective-C/C++ocoa中执行此 *** 作的好方法是什么?

解决方法 解释图像数据的任务由图像的表示对象处理.要使用专有格式,您有以下几种选择:(a)创建自定义表示类,(b)将NSCustomImageRep与自定义委托一起使用,或(c)使用自定义对象将图像转换为支持的格式,例如原始位图.

如果您选择创建自定义表示类,则将创建NSImageRep的子类,如Creating New Image Representation Classes中所述.这基本上要求您的类注册自身并能够绘制图像数据.除此之外,您可以覆盖方法以返回有关图像的信息,并且您将能够使用常规NSImage方法实例化图像.这种方法需要最多的工作.

使用NSCustomImageRep比创建自定义实现所需的工作少.您的委托对象只需要能够在固定位置绘制图像.但是,您无法返回有关图像的其他信息,您需要在创建NSImage之前手动创建NSCustomImageRep对象.

将图像转换为不同的格式也比创建自定义表示更简单.它可以像创建适当大小的空白NSImage并绘制到其中一样简单.创建图像仍然比较复杂,因为您需要调用您的翻译方法,这会影响效率(未来的绘图时间和内存使用),因为您正在更改格式,这可能是好的也可能是坏的.您还将丢失图像对象与其源之间的任何关联.

总结

以上是内存溢出为你收集整理的objective-c – 将专有二进制映像文件加载到NSImage的推荐方法?全部内容,希望文章能够帮你解决objective-c – 将专有二进制映像文件加载到NSImage的推荐方法?所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/1005490.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-22
下一篇 2022-05-22

发表评论

登录后才能评论

评论列表(0条)

保存