これが私の塗装方法です:
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
「スキャンライン ストライド」を要求します。正直なところ、それが何であるかはわかりません。(しかし、画像の幅である可能性がある場所を見つけました)。他のパラメータは正しいと思います。
結果は次のとおりです。
元の画像:
結果:
後で画像を加工します。同じ画像を開いて保存しています。