У меня есть это изображение:
Я хотел бы извлечь значения RGB этого изображения в int[]
. Это то, что я сделал до сих пор для изображений PNG:
File f = new File("t.jpg");
BufferedImage img = ImageIO.read(f);
int[] ib = img.getRGB(0, 0, img.getWidth(), img.getHeight(), null, 0, img.getWidth());
Color c = new Color(ib[0]);
System.out.println(c.getRed() + " " + c.getGreen() + " " + c.getBlue());
Но здесь я получаю этот вывод:255 128 128
что не ожидается, так как я ясно вижу (и проверил в нескольких графических редакторах ), что пиксель в (0,0 )имеет эти значения 255 255 255
.
Я заметил, что тип, возвращаемый img.getType()
, равен TYPE _3BYTE _BGR , поэтому я предполагаю, что это проблема декодирования, возникающая за сценой, но я не могу понять, как ее обойти. (или получить более четкое представление о том, что происходит ).
У кого-нибудь есть предложение о том, как правильно декодировать этот тип?