我有一堆专有二进制格式的图像文件,我想加载到NSImages中.格式不是简单的位图,而是一种与透明度和其他附加信息混合的RLE表示.
为了在Cocoa应用程序中显示其中一个图像,我需要一种逐字节解析图像文件的方法,并从中"计算"一个位图,然后将其放入NSImage中.
在Objective-C/Cocoa中执行此操作的好方法是什么?
解释图像数据的任务由图像的表示对象处理.要使用专有格式,您有以下几种选择:(a)创建自定义表示类,(b)使用NSCustomImageRep自定义委托,或(c)使用自定义对象将图像转换为支持的格式,例如原始位图.
如果选择创建自定义表示类,则将创建一个子类,NSImageRep如创建新图像表示类中所述.这基本上要求您的类注册自己并能够绘制图像数据.除此之外,您还可以覆盖方法以返回有关图像的信息,并且您将能够使用常规NSImage方法实例化图像.这种方法需要最多的工作.
使用NSCustomImageRep比创建自定义实现需要更少的工作.您的委托对象只需要能够在固定位置绘制图像.但是,您无法返回有关图像的其他信息,您需要在创建NSCustomImageRep之前手动创建对象NSImage.
将图像转换为不同的格式也比创建自定义表示更简单.它可以像创建NSImage适当大小的空白并绘制到其中一样简单.创建图像仍然比较复杂,因为您需要调用您的翻译方法,这会影响效率(未来的绘图时间和内存使用),因为您正在更改格式,这可能是好的也可能是坏的.您还将丢失图像对象与其源之间的任何关联.
| 归档时间: |
|
| 查看次数: |
331 次 |
| 最近记录: |