2015-09-30 54 views
1

在這裏,我們對如何從文件中獲取圖像的尺寸,一個很好的例子:https://stackoverflow.com/a/12164026/258483如何獲取圖像(在文件中)通道數量(顏色深度)?

該方法使用ImageReader它試圖不,如果不需要它讀取整個圖像。

是否有類似的方法來獲取圖像的顏色深度,這是3彩色圖像和1爲黑白圖像?

我發現它可能是ImageReader#getRawImageType(int)方法。這是正確的方法嗎?

回答

1

是,

您可以使用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以獲取更多信息。