java BuffereImage/ImageIcon空指针异常
图https://spooker.cc/spooker3.png
代码:
private JLabel getSpookerImage() {
URL url;
try {
url = new URL("http://spooker.cc/spooker3.png");
BufferedImage image = ImageIO.read(url);
ImageIcon icon = new ImageIcon(image);
return new JLabel(icon, JLabel.CENTER);
} catch (Exception e) {
e.printStackTrace();
}
return null;
}
例外情况:
java.lang.NullPointerException
at javax.swing.ImageIcon.<init>(ImageIcon.java:240)
at cc.spooker.ui.tabs.MainTab.getSpookerImage(MainTab.java:63)
at cc.spooker.ui.tabs.MainTab.getDestructPanel(MainTab.java:53)
at cc.spooker.ui.tabs.MainTab.<init>(MainTab.java:35)
at cc.spooker.ui.Frame.<init>(Frame.java:35)
at cc.spooker.Server.<init>(Server.java:21)
at cc.spooker.Main.main(Main.java:8)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:498)
at com.intellij.rt.execution.application.AppMain.main(AppMain.java:147)
也许是因为图像的背景是空白的?一点线索也没有,有什么帮助吗
# 1 楼答案
ImageIO.Read()
方法正在寻找用于图像的图像读取器,但找不到读取器,因此返回null。read()
方法接受PNG,所以我猜您的图像不是有效的PNG文件。尝试将其重新导出为PNG,或者以您创建的方式重新导出,以确保它不会以某种方式出现格式错误。我在这里用PNG文件测试了类似的代码:http://mrose.org/cc/png-test.png
而且效果很好