该问题可能与无法正确读取某些JPG图像的ImageIO.read有关.这是类似的bug(错误ID:4881314),可能仍然部分未解决.
作为替代方案,您可以尝试使用似乎正确处理指定图像的Toolkit.createImage.例如:
import java.awt.Image;
import java.awt.Toolkit;
import java.awt.image.BufferedImage;
import java.net.URL;
import javax.imageio.ImageIO;
import javax.swing.ImageIcon;
import javax.swing.JLabel;
import javax.swing.JOptionPane;
import javax.swing.JPanel;
class TestImage {
public static void main(String args[]) {
try {
URL imageUrl = new URL(
"http://tctechcrunch2011.files.wordpress.com/2012/10/gmm.jpg");
BufferedImage ioImage = ImageIO.read(imageUrl);
Image toolkitImage = Toolkit.getDefaultToolkit().createImage(
imageUrl);
JPanel panel = new JPanel();
panel.add(new JLabel(new ImageIcon(ioImage)));
panel.add(new JLabel(new ImageIcon(toolkitImage)));
JOptionPane.showMessageDialog(null, panel, "ImageIO vs Toolkit",
JOptionPane.INFORMATION_MESSAGE);
} catch (Exception e) {
JOptionPane.showMessageDialog(null, e.getMessage(), "Failure",
JOptionPane.ERROR_MESSAGE);
e.printStackTrace();
}
}
}
结果如下: