グレースケール値を含む.csvファイルをBufferedImageを使用してイメージに変換しようとしています。 最初にcsvはpixArray[]
に読み込まれ、すべての値は2倍になります。グレースケール値を.csvからBufferedImageに変換する
私はコード
BufferedImage image = new BufferedImage(width,height,BufferedImage.
TYPE_BYTE_GRAY);
for(int x = 0; x < width; x++)
{
for(int y = 0; y < height; y++)
{
image.setRGB(x, y, (int)Math.round(pixArray[y]));
}
}
File file_out = new File("output.png");
try {
ImageIO.write(image, "png", file_out);
} catch (IOException e) {
e.printStackTrace();
}
で100x100px出力画像を作成するためにBufferedImageを使用しようとしていますが、私は出力として持っているすべては、100x100の黒い四角です。
私はTYPE_BYTE_GRAY
の代わりに、outoutのpng形式だけでなく、このエラーを生成しているものを見つけることができませんでした。
入力データのサンプルを表示します。値が '0.0 <= x <= 1'の場合、' Math.round() 'はすべてをゼロに切り詰めて黒くなります。 –
値はすべて0 <= x <= 255 最初は「111.8884 \t 112.2339 \t 113.4165」のように読み込まれます。 丸めを取り除いてみましたが、 'int'キャストを維持したまま、出力としてすべて黒を受け取りました。 – gorringe
次のようにするべきではありません: 'int g =(int)Math.round(pixArray [y]); image.setRGB(x、y、new Color(g、g、g).getRGB());私はアルファをピクセル値に設定し、カラーコンポーネントはすべてゼロにしていると思います。 –