gpt4 book ai didi

java - 从 2d 像素阵列创建图片并将其显示在 jpanel 上

转载 作者:行者123 更新时间:2023-12-01 12:04:34 24 4
gpt4 key购买 nike

我有以下代码:

public class TryToMakeSomethingHappen extends JPanel  {

private JFrame f;
private JPanel p;
public TryToMakeSomethingHappen() {
f=new JFrame("Title");
f.setSize(600, 400);
f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
p=new JPanel(new BorderLayout());

ImageIcon ic=new ImageIcon("/home/michael/Pictures/begin1.jpg");

int imageHeight = ic.getIconHeight();
int imageWidth = ic.getIconWidth();

BufferedImage bimg = new BufferedImage(imageWidth ,imageHeight, BufferedImage.TYPE_INT_ARGB);

int pixels[][]=new int[imageWidth][imageHeight];
for (int i=0;i<imageWidth;i++)
for(int j=0; j<imageHeight;j++)
pixels[i][j]=bimg.getRGB(i, j);
BufferedImage bimg2=new BufferedImage(imageWidth, imageHeight, BufferedImage.TYPE_INT_ARGB);

for(int y=0;y<imageHeight;y++)
for(int x=0;x<imageWidth;x++){
bimg2.setRGB(x, y,pixels[x][y]);
}
File file= new File("/home/michael/Pictures/pic2.png");
JLabel label=new JLabel("",ic,JLabel.CENTER);
JLabel label1;
try {
ImageIO.write(bimg2,"PNG",file);
ImageIcon ic2=new ImageIcon("/home/michael/Pictures/pic2.png");
label1=new JLabel("",ic2,JLabel.CENTER);
p.add(label1,BorderLayout.EAST);
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
p.add(label,BorderLayout.WEST);

f.setVisible(true);
f.add(p);
}

public static void main(String[]args){
TryToMakeSomethingHappen t = new TryToMakeSomethingHappen();
}
}

f 是 JFrame,bimg2 是 BufferedImage,p 是 JPanel。 (我类(class)的私有(private)学生)。

显示了 WEST 图片,而没有显示 EAST 图片。这是为什么?当我检查文件夹中的 pic2 时,它是空的。我使用 Linux(Ubuntu)。

如何使 bimg2 显示在面板的东侧?

最佳答案

发布的代码有什么意义?

When i check pic2 in the folder, it is empty.

我们一步步看一下代码:

BufferedImage  bimg = new BufferedImage(imageWidth ,imageHeight, BufferedImage.TYPE_INT_ARGB);

首先,您创建一个空白的 BufferedImage(在这种情况下,我相信像素将全部为黑色)。

pixels[i][j]=bimg.getRGB(i, j);

然后将未更改的像素复制到数组中。

BufferedImage bimg2=new BufferedImage(imageWidth, imageHeight, BufferedImage.TYPE_INT_ARGB);

然后创建另一个空白图像。

 bimg2.setRGB(x, y,pixels[x][y]);

然后将 BufferedImage 的像素设置为数组中未更改(即黑色)的像素

ImageIO.write(bimg2,"PNG",file);

然后将 BufferedImage 写入文件。

BufferedImage 仍然包含创建 BufferedImage 时的默认像素。您希望看到什么?

关于java - 从 2d 像素阵列创建图片并将其显示在 jpanel 上,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27719825/

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