我已经编写了一个PCX解码器(Java中的ImageIO
插件),除了一个细节外,它的工作正常:
我不明白是否和/或何时应该在标题中使用调色板的两种第一种颜色,或者只使用固定的B / W调色板来存储1位数据。
是否有算法或启发式方法可以确定是否应该使用调色板,或者是否应该使用标准B / W?标题中是否有一些设置我是失踪?或者在解码之前是否只需要提前知道这些信息?
我拥有的示例文件显示了非常不一致的行为:
-
我有一个我无法分享的示例文件,其中无关紧要:版本:0,bpp:1,plane:1,palette info:0
使用标题调色板很好,因为它与默认的B / W相同。
-
Sample file, where the palette should probably not be used (but being version 2, perhaps is should?):版本:2,bpp:1,plane:1,palette info:0。使用调色板会使背景变为蓝色。默认B / W看起来不错。
- 我还有一个我不能分享的示例文件,我理解调色板应该不:版本:3,bpp:1,plane:1,palette info:0
这里的调色板都是黑色的(全0),这很有意义,因为版本3意味着没有调色板。
- Sample file, where palette should be used(基于对颜色的手动检查):版本:5,bpp:1,平面:1,调色板信息:0。
使用标题调色板很好。默认B / W看起来倒了。
- Sample file, where the palette should not be used:版本:5,bpp:1,飞机:1,调色板信息:0(如前一个样本)。使用调色板将使火车在黑色背景上变白。默认B / W看起来不错。
- Sample file, where it doesn't matter:版本:5,bpp:1,plane:1,palette info:0。使用标题调色板很好,因为它与默认的B / W相同。
- 我还有一个由Photoshop编写的示例文件,我无法分享调色板应不使用的位置:版本:5,bpp:1,plane:1,palette info:0
这里的调色板只是垃圾值(15,15,15,1144,14 ...... 0,0,0),使图像看起来全黑。默认B / W看起来不错。
我已经阅读了几乎所有可以在互联网上找到的文档,包括:
......以及其他一些不太有用的页面,似乎没有讨论相关主题。