感谢元数据提取程序库,它确实很有帮助。它为我提供了我需要的所有信息,除了JPG是RGB还是CMYK格式。信息在那里吗?我只是看不到它,还是该库未返回此属性?
谢谢
答案 0 :(得分:0)
来自Java ImageIO软件包中的本文档:
https://docs.oracle.com/javase/7/docs/api/javax/imageio/metadata/doc-files/jpeg_metadata.html
在读取时,流的内容由通常的JPEG约定解释,如下所示:
如果存在JFIF APP0标记段,则已知色彩空间为灰度或YCbCr。如果还存在包含嵌入式ICC配置文件的APP2标记片段,则根据JFIF规范中给出的公式,将YCbCr转换为RGB,并假定ICC配置文件引用生成的RGB空间。
< / li>如果存在Adobe APP14标记段,则通过查询转换标志来确定颜色空间。转换标志采用以下三个值之一:
- 2-图像被编码为YCCK(在编码时从CMYK隐式转换)。
- 1-图像被编码为YCbCr(在编码时从RGB隐式转换)。
- 0-未知。假定3通道图像为RGB,假定4通道图像为CMYK。
如果两个标记段均不存在,则遵循以下过程:假定单通道图像为灰度,并且假定2通道图像为具有alpha通道的灰度。对于3通道和4通道图像,请查阅组件ID。如果对于3通道图像,这些值为1-3,则该图像被假定为YCbCr。取决于上述可选颜色空间支持的可用性,如果对于4通道图像,这些值是1-4,则假定该图像为YCbCrA。如果这些值> 4,则将它们与ASCII代码“ R”,“ G”,“ B”,“ A”,“ C”,“ c”进行检查。这些可以编码以下色彩空间:
- RGB
- RGBA
- YCC(以“ Y”,“ C”,“ c”表示),假设是PhotoYCC
- YCCA(以“ Y”,“ C”,“ c”,“ A”表示),假设是PhotoYCCA
否则,将3通道子采样图像假定为YCbCr,将3通道非子采样图像假定为RGB,将4通道子采样图像假定为YCCK,并且将4通道非子采样图像确定为。假定为CMYK。
所有其他图像均声明为不可解释。
Metadata Extractor不会执行这些转换,但是上述方法提供了一个经过测试的示例,可以用来确定颜色格式。