Короткий ответ, он должен быть iArray[0] = 233, iArray[1] = 244, iArray[2] = 10
вместо iArray[0] = [24424410]
.
Однако объем данных будет зависеть от того, что поддерживает WritableRaster
. Рассмотрим следующий пример, в котором мы извлекаем WriteableRaster
из двух BufferedImages
; один из которых содержит данные RGB и другие данные ARGB. Если мы получим значения пикселей, мы увидим, что массив имеет длину 3 для данных RGB и длину 4 для данных ARGB.
Код:
public static void main(String[] args) {
BufferedImage rgbImage = new BufferedImage(8, 8,
BufferedImage.TYPE_INT_RGB);
WritableRaster rgbRaster = rgbImage.getRaster();
BufferedImage argbImage = new BufferedImage(8, 8,
BufferedImage.TYPE_INT_ARGB);
WritableRaster argbRaster = argbImage.getRaster();
rgbImage.setRGB(0, 0, new Color(255, 125, 1, 16).getRGB());
argbImage.setRGB(0, 0, new Color(255, 125, 1, 16).getRGB());
int[] rgb = rgbRaster.getPixel(0, 0, (int[]) null);
int[] argb = argbRaster.getPixel(0, 0, (int[]) null);
System.out.print("rgb:");
for (int i = 0; i < rgb.length; ++i)
System.out.print(" "+rgb[i]);
System.out.print("\nargb:");
for (int i = 0; i < argb.length; ++i)
System.out.print(" "+argb[i]);
}
Выход:
rgb: 255 125 1
argb: 255 125 1 16
Спасибо очень много. Я полагаю, что первые 255 в выводе для значения Alpha? Но почему выход rgb должен быть 255 125 1, а не 125 1 16? – SamW