如何获取图像(在文件中)通道数量(颜色深度)?
问题描述:
在这里,我们对如何从文件中获取图像的尺寸,一个很好的例子: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 documentation和IIOMetadataNode
API doc以获取更多信息。