Я пишу метод, который принимает три двумерных массива int (представляющих значения R, G и B изображения), ширину и высоту, а также логическое значение, обозначающее, является ли указанное изображение цветным или черно-белым. Я хочу, чтобы метод создавал BufferedImage из заданных входных данных.
Вот что у меня есть:
public static BufferedImage createImage(int[][] r, int[][] g, int[][] b,
int width, int height, boolean isColor) {
BufferedImage ret;
if (isColor)
ret = new BufferedImage(width, height, BufferedImage.TYPE_INT_RGB);
else
ret = new BufferedImage(width, height, BufferedImage.TYPE_BYTE_GRAY);
WritableRaster raster = ret.getRaster();
for (int i = 0; i < height; i++) {
for (int j = 0; j < width; j++) {
if (isColor) {
raster.setSample(j, i, 0, r[i][j]);
raster.setSample(j, i, 1, g[i][j]);
raster.setSample(j, i, 2, b[i][j]);
}
else
raster.setSample(j, i, 0, r[i][j]);
}
}
return ret;
}
Однако я написал модульный тест, который должен создать цветное изображение 5x5, заполненное белым (255, 255, 255), но растровые данные заполнены чрезвычайно большими значениями, а не 255. Я не слишком знаком с этим изображения и AWT в целом, поэтому я чувствую, что неправильно создаю BufferedImage. Я пытался ссылаться на Java API для BufferedImage, но мне не очень повезло, что он это выяснил. Любая помощь будет оценена.