该库可以检测JPG是RGB还是CMYK格式吗?

时间:2018-12-04 06:48:11

标签: metadata-extractor

感谢元数据提取程序库,它确实很有帮助。它为我提供了我需要的所有信息,除了JPG是RGB还是CMYK格式。信息在那里吗?我只是看不到它,还是该库未返回此属性?

谢谢

1 个答案:

答案 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不会执行这些转换,但是上述方法提供了一个经过测试的示例,可以用来确定颜色格式。