当前位置: 首页 > 知识库问答 >
问题:

从数组到BufferedImage的不正确转换

李洋
2023-03-14

图像转换为RGB灰度。
接下来,Graycale-image被转换为一个数组,执行该数组以定义转换。因此,数组由“0”和“255”组成。

然后,我需要把这个数组变成BufferedImage。

我使用了代码

public static BufferedImage getImageFromArray(int pixelsMain[][], int width, int height) throws IOException {

        int pixels[] = new int[320*240];

        for(int i=0, numb=0; i<pixelsMain.length; i++)
            for(int j=0; j<pixelsMain[i].length; j++){
                pixels[numb]=pixelsMain[i][j];
                numb++;
            }

        BufferedImage image = new BufferedImage(width, height, BufferedImage.TYPE_BYTE_GRAY);
        WritableRaster raster = (WritableRaster) image.getData();
        raster.setPixels(0,0,width,height,pixels);
        try {
            ImageIO.write(image, "bmp", new FileOutputStream("[path]"));
        } catch (IOException e) {
            e.printStackTrace();
        }
        return image;
    }

但是,在执行该方法后-所有值​​其中“255”转换为“-1”。

结果,图像完全是黑色的。

你能告诉我如何解决这个问题吗?

共有1个答案

韩阳云
2023-03-14

使用 image.getRaster() 而不是 (WritableRaster)image.getData()。。后者是复制品,所以改变它没有效果。

 类似资料:
  • 自从我尝试模拟我的客户端和服务器之间处理数据包的连接以来,我一直在与字节数组和BigIntger进行斗争。 当我的客户端连接到服务器时,服务器发送了一个包含RSA公钥的响应,然后是一个十六进制数据包,如下所示: C70001A1004080之后的64字节是RSA公共指数。RSA指数后的128字节是模数。 然后我尝试提取指数和模来重新生成RSA公钥。我的步骤: 最后我有了一个公钥: 与服务器上的RS

  • 在我的MySQL数据库中,我有一个有三列的表,如下所示 notification_time是时间的数据类型。 在我的Spring-boot应用程序中,为表建模

  • 我试图使用python将列表转换为数据帧。我有我的列表(正确的数据)中所有必要的数据,以词典列表的形式。请参阅下面的词典列表: 我使用以下命令将其转换为数据帧。 数据框不再将字典键作为列标题,而是将数字0-8作为列标题,并在字典值应该在的地方循环打印列名。这是我得到的数据帧输出: 产生这种输出的原因是什么?我该如何纠正?任何帮助都将不胜感激。

  • 从SQL Server导入,数据类型未正确转换堆栈:已使用Ambari 2.1安装HDP-2.3.2.0-2950 目的: null 我错过了什么?

  • 我在Java中有一个tiff图像的INT[2048][2048]原始数据数组。我想把那个数组转换回BufferedImage。我该如何进行?

  • 问题内容: 我有一个类型为TYPE_4BYTE_ABGR的字节数组,我知道它的宽度和高度,我想将其更改为BufferedImage,有什么想法吗? 问题答案: 可能效率不是很高,但是可以通过以下方式将a转换为另一种类型: 关于您要实现的方法,您必须知道图像的宽度或高度才能将a转换为a 。 编辑: 一种方法是将转换为(数据类型)并使用: