当前位置: 首页 > 面试题库 >

如何在Java中显示像素值数组中的图像?

程飞星
2023-03-14
问题内容

我打算在窗口内显示28x28像素的图像。像素的值为“
0”,因此我希望它显示一个带有28x28黑色正方形的窗口。但是没有图像显示。也许数组的数据(我不确定像素值是否必须为0到255之间的整数)必须是其他数据才能显示图像。谢谢!

公共课程ASD {

public static Image getImageFromArray(int[] pixels, int width, int height) {
    BufferedImage image = new BufferedImage(width, height, BufferedImage.TYPE_INT_ARGB);
    WritableRaster raster = (WritableRaster) image.getData();
    System.out.println(pixels.length + " " + width + " " + height);
    raster.setPixels(0,0,width,height,pixels);
    return image;
}

public static void main(String[] args) throws IOException {
    JFrame jf = new JFrame();
    JLabel jl = new JLabel();

    int[] arrayimage = new int[784];
    for (int i = 0; i < 28; i++)
    {   for (int j = 0; j < 28; j++)
            arrayimage[i*28+j] = 0;
    }
    ImageIcon ii = new ImageIcon(getImageFromArray(arrayimage,28,28));
    jl.setIcon(ii);
    jf.add(jl);
    jf.pack();
    jf.setVisible(true);
}

问题答案:

image.getData()返回栅格的 副本 。也许如果image.setData(raster)在修改栅格后调用,您将看到结果。

同样,应该给setPixels一个足够大的数组,以填充栅格的所有波段(A,R,G,B)。在将像素大小增加为28 * 28 * 4之前,我已经获得了数组索引超出范围的异常。

对于TYPE_INT_RGB,以下内容应产生白色图像:

public class ASD
{
  public static Image getImageFromArray(int[] pixels, int width, int height)
  {
    BufferedImage image =
        new BufferedImage(width, height, BufferedImage.TYPE_INT_RGB);
    WritableRaster raster = (WritableRaster) image.getData();
    raster.setPixels(0, 0, width, height, pixels);
    image.setData(raster);
    return image;
  }

  public static void main(String[] args) throws IOException
  {
    JFrame jf = new JFrame();
    JLabel jl = new JLabel();

    //3 bands in TYPE_INT_RGB
    int NUM_BANDS = 3;
    int[] arrayimage = new int[28 * 28 * NUM_BANDS];

    for (int i = 0; i < 28; i++)
    {
      for (int j = 0; j < 28; j++) {
        for (int band = 0; band < NUM_BANDS; band++)
          arrayimage[((i * 28) + j)*NUM_BANDS + band] = 255;
      }
    }
    ImageIcon ii = new ImageIcon(getImageFromArray(arrayimage, 28, 28));
    jl.setIcon(ii);
    jf.add(jl);
    jf.pack();
    jf.setVisible(true);
  }
}


 类似资料:
  • 我想显示图像,但不知道该怎么做。我不知道是必须安装一些库文件,还是简单地安装就可以了。实际上我想做图像处理,但首先我必须接受图像输入并显示图像,然后我可以得到图像处理的效果作为输出,并决定它(算法)是否正确。我只安装了eclipse。我也在谷歌上搜索过,但是无论他们建议什么都不管用。要么我得装点什么,要么不装。 我已经尝试了以下代码: 它只是显示一个图形窗口,但不能显示图像“bishnu.jpg”

  • 问题内容: 我有一个图像,我想在applet中显示它,问题是图像无法显示。我的代码有问题吗? 谢谢… 这是我的代码: 问题答案: 我怀疑您做错了,这应该很简单: HTML / applet元素的内容是什么?图片的名称是什么?图像与HTML位于同一目录中吗? 更新1 代码的第二行(已更改)将尝试将文件加载到与HTML相同的目录中。 当然,您可能需要添加一个来跟踪图像的加载,因为该方法立即返回(现在)

  • 这里是交易,我必须从sql server获取一个文本值,它是一个编码图像,存储在字符串中,然后我可以通过解码将其转换为图像类型,问题是,我如何在asp:image中显示解码后的图像?因为我希望这个组件有一个.image属性,我可以把图像放进去,它会像那样显示,但它只有.ImageUrl,如果图像存储在我的电脑中,它会工作得很好,但它不是,我尝试将它设为二进制字符串,然后使用和asp:image-u

  • 问题内容: 我正在尝试在Swift PickerView中使用图像。我不知道如何使图像实际出现在组件中。我知道如何使用带有titleForRow函数的Strings来执行此操作,但是我不知道如何使用图像来执行此操作。到目前为止,这是我的代码: 问题答案: 您将需要为UIPickerViewDelegate协议实现更多的委托方法。特别是rowHeight委托方法和viewForRow委托方法。 就像

  • 问题内容: 我很难弄清楚如何在Java小程序中显示Image(或ImageIcon)。以下是我的代码。图片(test.bmp)确实存在并且在D驱动器上,但是当我运行它时,我得到的applet窗口中没有任何内容。有人可以告诉我要显示ImageIcon缺少的内容吗? 谢谢,史蒂夫。 问题答案: 从服务器运行小程序时,无法通过绝对本地文件路径引用映像。 使用ImageIcon(URL位置)构造函数, 并

  • 我正在做一个android项目(java),在这个项目中,我想使用webview来显示一个通过使用FileChooser从Phone的存储中选择的图像。在我的java代码中,我有 欢迎任何建议。