我想提取圖像像素的R,G和B值。我以兩種方式做到這一點。從ColorModel獲取RGB分量
File img_file = new File("../foo.png");
BufferedImage img = ImageIO.read(img_file);
一號方法(正常工作):
img.getRaster().getPixel(i, j, rgb);
第二個方法(拋出新的拋出:IllegalArgumentException( 「每像素的多個組件」))
red = img.getColorModel().getRed(img.getRGB(i, j));
什麼這種行爲的原因?
感謝您的答覆。但是如何確定顏色模型是否可以由單個int值表示? – Rayhunter
就我個人而言,我會檢查它是'instanceof' ComponentColorModel',IndexColorModel'還是'PackedColorModel',但是你也可以測試getNumColorComponents,getNumComponents和getPixelSize是什麼返回... – MadProgrammer
@Rayhunter,'BufferedImage'只支持最多32位的類型,因此所有像素都可以放入Java int中(參見支持的類型http://docs.oracle.com/javase/7/docs/api/java/awt/image /BufferedImage.html#TYPE_3BYTE_BGR) – Jason