java - 如何获取图像(在文件中)的 channel 数(颜色深度)?

标签 java image javax.imageio color-depth

这里我们有一个关于如何从文件中获取图像尺寸的好例子:https://stackoverflow.com/a/12164026/258483

该方法使用ImageReader如果不需要,它会尝试不读取整个图像。

是否有类似的方法来获取图像的颜色深度,彩色图像为 3,黑白图像为 1?

我发现可能是ImageReader#getRawImageType(int)方法。这是正确的方法吗?

最佳答案

是的,

您可以使用imageReader.getRawImageType(imageNo)。这种方法在大多数情况下都有效。不幸的是,在某些情况下它会返回 null,尤其是对于编码为 YCbCr(而不是 RGB)的 JPEG 图像,这可能是 JPEG 最常见的情况...

获取相同信息的另一种方法是使用图像元数据对象,并查看标准元数据格式,以获取此信息:

IIOMetadata metadata = imageReader.getImageMetadata(imageNo);
if (metadata.isStandardFormatSupported()) { // true for all bundled formats
    IIOMetadataNode root = (IIOMetadataNode) imageMetadata.getAsTree("javax_imageio_1.0");

    // Get either (as pseudo-xpath):
    // /Chroma/NumChannels[@value], which is just number of channels, 3 for RGB
    // /Data/BitsPerSample[@value], bits per sample, typically 8,8,8 for 24 bit RGB
}

您可以查看standard format documentationIIOMetadataNode API doc了解更多信息。

关于java - 如何获取图像(在文件中)的 channel 数(颜色深度)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32863762/

相关文章:

Java ImageIO.read() 返回 null

java - TCP 套接字上的多个图像文件

java 提取jpeg图像细节

Java - 读取字节数组中的文件

java - 无法解析符号 createTempFile

java - Eclipse Maven 项目摆脱 wb-resource 警告

css - 如何使用 css 将图像链接缩放到 100% 的 div?

javascript - "data:image/png;base64,b64Encoderpngstring"设置 html img src 时 VS url-to-folder

mysql - 从 MySQL 数据库中删除 blob

java - 这是这个月的最后一天吗?