1

ピクセルあたり 8 ビットのグレースケール データを含むバイト配列か、ピクセルあたり 1 ビットのバイナリ データを含むバイト配列があります。

私はこれを試しましたが、うまくいきません.1ピクセルあたり4バイト(32ビット)を取っていると思います:

BufferedImage image = ImageIO.read(new ByteArrayInputStream(byteArray));
ImageIO.write(image, "BMP", new File("filename.bmp"));

BufferedImage でデータのタイプを 1 ビットまたは 8 ビットに変更できますか?

4

1 に答える 1

1

少し似たような状況で、 を使用RasterしましBufferedImageた。グレー スケール 8 ビットのこの簡単な例を参照してください。

public static void main(String[] args) {
    JFrame f = new JFrame();
    f.setSize(600, 400);
    f.getContentPane().setLayout(new BorderLayout());
    BufferedImage bi = new BufferedImage(200, 100, BufferedImage.TYPE_BYTE_GRAY);
    WritableRaster wr = bi.getRaster();
    for (int col=0; col<bi.getWidth(); col++) {
        for (int row=0; row<bi.getHeight(); row++) {
            wr.setPixel(col, row, new int[] {(col+row)&0xff});
        }
    }
    JLabel l = new JLabel(new ImageIcon(bi));
    f.getContentPane().add(l, BorderLayout.CENTER);
    f.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
    f.setVisible(true);
}

BufferedImage1ピクセルあたり1ビットをサポートしているかどうかは覚えていません。setPixelsおそらく、一度に多くのピクセルを設定するバリアントを見たいと思うでしょう。

于 2012-07-03T14:16:51.980 に答える