除了使用ImageIO.read获取图像高度和宽度之外还有其他方法吗?
因为我遇到了锁定线程的问题.
at com.sun.medialib.codec.jpeg.Decoder.njpeg_decode(Native Method)
at com.sun.medialib.codec.jpeg.Decoder.decode(Decoder.java:87)
at com.sun.media.imageioimpl.plugins.jpeg.CLibJPEGImageReader.decode(CLibJPEGImageReader.java:73)
- locked <0xd96fb668> (a com.sun.media.imageioimpl.plugins.jpeg.CLibJPEGImageReader)
at com.sun.media.imageioimpl.plugins.clib.CLibImageReader.getImage(CLibImageReader.java:320)
- locked <0xd96fb668> (a com.sun.media.imageioimpl.plugins.jpeg.CLibJPEGImageReader)
at com.sun.media.imageioimpl.plugins.clib.CLibImageReader.read(CLibImageReader.java:384)
- locked <0xd96fb668> (a com.sun.media.imageioimpl.plugins.jpeg.CLibJPEGImageReader)
at javax.imageio.ImageIO.read(ImageIO.java:1400)
at javax.imageio.ImageIO.read(ImageIO.java:1322)
Run Code Online (Sandbox Code Playgroud)
此错误仅发生在Sun应用服务器上,因此我怀疑它是Sun错误.
我正在使用Swing创建一个UI,我想在一个图像中显示一个图像JLabel.我使用的代码如下:
JLabel label = new JLabel(new ImageIcon(ImageIO.read(new File("img.jpg"))));
Run Code Online (Sandbox Code Playgroud)
如果我使用png图像,这可以正常工作,但是当涉及到jpg(只有其中一些)时,我得到一个红色图像(与我在Paint.NET中看到的图像不同).我使用的图像是这个:img.jpg
所以我试过(作为替代方案):
Toolkit.getDefaultToolkit().createImage(new File("img.jpg").getAbsolutePath());
Run Code Online (Sandbox Code Playgroud)
JPEG是不受支持的特殊格式吗?非常感谢