gpt4 book ai didi

java - 如何使用 ImageIO 测试 BufferedImage 是否拾取 'null'

转载 作者:行者123 更新时间:2023-12-01 20:07:08 25 4
gpt4 key购买 nike

我试图将我的程序(使用netbeans的java)设置为如果它找到它要查找的图像则执行一件事,如果没有找到则执行另一件事...

这是我到目前为止所得到的,但它从未完成 else 语句。我相信这是因为“image”在技术上不是空的,因为它仍然对应于输入的文件名,但是我不确定如何设置java来根据目录中找不到文件名来执行某些操作。

public void displayImage(String strfilename, JLabel JLlabel) {

try {
JLabel label = JLlabel;

String FileName = strfilename;
BufferedImage image = ImageIO.read(new File(FileName + ".jpg"));
if(image!=null){
ImageIcon icon = new ImageIcon(image);

label.setIcon(icon);}
else{
BufferedImage image2 = ImageIO.read(new File("NOIMAGE.jpg"));
ImageIcon icon2 = new ImageIcon(image2);
label.setIcon(icon2);
}
} catch (IOException ioe) {
}
}

如果有人能帮助我,我将非常感激

最佳答案

你正在接受异常。您不需要 if{}else{} 循环,因为您已经有一个 try{}catch{}。

String FileName = file;
try {
BufferedImage image = ImageIO.read(new File(FileName + ".jpg"));
// Code for when the image is found
} catch (IOException ex) {
// Code for when the image is not found
}

编辑:正如 @haraldK 指出的,您可以拥有一个存在但不可读的文件,在这种情况下将抛出 NullPointerException。

您可以在 catch 子句中处理它们。

public void displayImage(String strfilename, JLabel label) {
try {
BufferedImage image = ImageIO.read(new File(strfilename + ".jpg"));
ImageIcon icon = new ImageIcon(image); // Can throw NullPointerException if the file is found but is unreadable
label.setIcon(icon);

} catch (IOException | NullPointerException ex) {
ImageIcon icon = new ImageIcon("NOIMAGE.jpg");
label.setIcon(icon);
}
// You're probably going to have to pack or validate your container here
}

值得注意的是,这不会检查 NOIMAGE 的异常,您可能需要添加它。

这比仅仅调用 File.exists() 更好,因为它还可以处理存在但不可读的文件(文本文件等)。

关于java - 如何使用 ImageIO 测试 BufferedImage 是否拾取 'null',我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47277358/

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