Как получить значения rgb изображения jpeg в TYPE _3BYTE _BGR?

У меня есть это изображение:

Google image

Я хотел бы извлечь значения 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 , поэтому я предполагаю, что это проблема декодирования, возникающая за сценой, но я не могу понять, как ее обойти. (или получить более четкое представление о том, что происходит ).

У кого-нибудь есть предложение о том, как правильно декодировать этот тип?

5
задан aymeric 14 August 2012 в 19:42
поделиться