gpt4 book ai didi

java - 在Java中从包含8位(灰度)或1位(二进制)数据的字节数组创建图像(bmp左右)

转载 作者:太空宇宙 更新时间:2023-11-04 08:10:27 26 4
gpt4 key购买 nike

我有一个字节数组,其中包含每像素 8 位的灰度数据或包含每像素 1 位的二进制数据。

我尝试了这个,但它不起作用,我认为每个像素占用 4 个字节(32 位):

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

我可以将 BufferedImage 中的数据类型更改为 1 位或 8 位吗?

最佳答案

在稍微类似的情况下,我将 RasterBufferedImage 一起使用。请参阅这个使用 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);
}

我不记得BufferedImage是否支持每像素1位。您可能想查看一次设置多个像素的 setPixels 变体。

关于java - 在Java中从包含8位(灰度)或1位(二进制)数据的字节数组创建图像(bmp左右),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11311182/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com