gpt4 book ai didi

java - 以阻塞方式轻松在屏幕上打印图像以进行调试

转载 作者:行者123 更新时间:2023-12-03 23:00:53 24 4
gpt4 key购买 nike

我正在从事一个计算机视觉项目,在一个过程中的某个地方发生了无限循环。看来我的图像数据已损坏。

以前,我用这种方法将调试结果保存在磁盘上:

   public static boolean saveToPath(String path, BufferedImage image) {
File img = new File(path);
try {
ImageIO.write(image, "png", new File(path));
} catch (IOException ex) {
System.err.println("Failed to save image as '"+path+"'. Error:"+ex);
return false;
}
return true;
}

问题是一旦使用循环并且错误介于两者之间,我需要查看很多图像。所以基本上,我想要一个这样定义的方法:

  /** Displays image on the screen and stops the execution until the window with image is closed.
*
* @param image image to be displayed
*/
public static void printImage(BufferedImage image) {
???
}

并且可以在循环或任何函数中调用以显示实际图像,有效地表现得像一个断点。因为虽然多线程在生产代码中非常好,但阻塞函数更适合调试。

最佳答案

您可以像这样编写代码。在此示例中,图像文件必须与源代码位于同一目录中。

这是对话框中显示的图像。您左键单击“确定”按钮以继续处理。

Display Image

如果图片比屏幕大,会出现滚动条让您看到整个图片。

在您的代码中,由于您已经拥有图像,因此您只需复制并粘贴 displayImage 方法即可。

package com.ggl.testing;

import java.awt.Image;
import java.io.IOException;

import javax.imageio.ImageIO;
import javax.swing.ImageIcon;
import javax.swing.JLabel;
import javax.swing.JOptionPane;
import javax.swing.JPanel;
import javax.swing.JScrollPane;

public class DisplayImage {

public DisplayImage() {
displayImage(getImage());
}

private Image getImage() {
try {
return ImageIO.read(getClass().getResourceAsStream(
"StockMarket.png"));
} catch (IOException e) {
e.printStackTrace();
return null;
}
}

public void displayImage(Image image) {
JLabel label = new JLabel(new ImageIcon(image));

JPanel panel = new JPanel();
panel.add(label);

JScrollPane scrollPane = new JScrollPane(panel);
JOptionPane.showMessageDialog(null, scrollPane);
}

public static void main(String[] args) {
new DisplayImage();
}

}

关于java - 以阻塞方式轻松在屏幕上打印图像以进行调试,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28727616/

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