我正在编写一个用于确定JPEG图像颜色空间的代码。我发现两个参考文献可能有助于我实现这一点。一个在oracle.com上,另一个是来自ijg.com的C源代码,该网站“负责原始JPEG标准的参考实现”。
然而它们确实不同。例如,在IJG中,如果没有Adobe标记并且有4个通道,则假定为CMYK,但在oracle中则为YCCA。另外,IJG的实现不考虑子采样,而在oracle规格中,对于4通道子采样,其颜色空间为YCCK等等。
此外,在ColorSpace类中还有许多缺失,当我实现oracle逻辑时,我需要指定3个额外的颜色空间,如YCCK、YCCA、RGBA。
还有一点是,我发现JPEG不支持alpha通道中的透明度,这里为什么会有oracle谈论有关JPEG元数据规范的YCCA和RGBA的内容呢?
当使用IJG的逻辑检查图像时,结果告诉我它是CMYK格式(在ubuntu上使用ImageMagick检查图像时也显示为CMYK),但使用Oracle的逻辑却显示为YCCA格式。应该相信谁?为什么Oracle不依赖于原始的JPEG规范?还是有其他我不知道的原因?