4
這裏是我的繪畫方法:ImageIO.write是保存圖像失真與
BufferedImage bi = new BufferedImage(width, height, BufferedImage.TYPE_INT_RGB);
bi.setRGB(0, 0, width, height, rgbIntArray, 0, width);
ImageIO.write(bi, "bmp", new File("C:/Users/Felipe/Desktop/img2.bmp"));
這是我如何填充rgbIntArray:
rgbIntArray = new int[(rgbArray.length/3)];
int j = 0;
for (int i = 0; i < rgbArray.length; i += 3)
{
rgbIntArray[j] = unsignedToBytes(rgbArray[i]) +
unsignedToBytes(rgbArray[i + 1]) * 256 +
unsignedToBytes(rgbArray[i + 2]) * 65536;
j++;
}
我測試了這些價值觀,他們似乎是正確的。
我認爲問題是在setRGB
的最後一個參數,它要求「掃描線跨度」,說實話,我不知道它是什麼。 (但我發現它可能是圖像的寬度)。我假設其他參數是正確的。
下面是結果:
原圖:
結果:
我將在後面操作圖像。我只是打開並保存相同的圖像。
你如何填充rgbIntArray? – Sinkingpoint 2013-05-04 01:00:38
你的代碼塊中的「rgbArray」是什麼? – Zyerah 2013-05-04 01:07:17
這是從圖像中讀取的B G R陣列。 – 2013-05-04 01:10:43