我正在寫一個方法,它需要三個二維詮釋數組(代表一個圖像的R,G和B值),寬度和高度,和一個布爾值表示如果指定的圖像是彩色或黑色和白色。我想要的方法是從給定的輸入數據創建一個BufferedImage。創建一個自定義的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;
}
不過,我寫了一個單元測試應該創建填充白色(255,255,255)5x5的彩色圖像,但柵格數據填充具有非常大的值,而不是255.我不太熟悉這個圖像的東西和一般的AWT,所以我覺得我沒有正確創建BufferedImage。我一直在嘗試引用BufferedImage的Java API,但沒有太多的運氣搞清楚它。任何幫助,將不勝感激。
你最近看到的是柵格數據?您是將BufferedImage繪製到顯示器上,還是直接分析像素數據?根據您的代碼,圖像似乎是正確生成的,因此需要更詳細的信息來了解發生問題的位置。 – 2011-03-06 01:03:48