2012-04-11 31 views
2

我試圖加載使用1.7.0u JVM使用ImageIO.read()這一形象:爲什麼Java不能解析這個圖像?

http://taste-for-adventure.tablespoon.com/files/2012/02/2012-02-05-poll-hotdog-275w.jpg

鉻有沒有它的麻煩,但Java拋出以下異常:

java.lang.NullPointerException 
    at java.awt.color.ICC_Profile.intFromBigEndian(ICC_Profile.java:1770) 
    at java.awt.color.ICC_Profile.getNumComponents(ICC_Profile.java:1462) 
    at sun.java2d.cmm.lcms.LCMSTransform.<init>(LCMSTransform.java:122) 
    at sun.java2d.cmm.lcms.LCMS.createTransform(LCMS.java:76) 
    at java.awt.color.ICC_ColorSpace.fromRGB(ICC_ColorSpace.java:222) 
    at com.sun.imageio.plugins.jpeg.JPEGImageReader.setImageData(JPEGImageReader.java:635) 
    at com.sun.imageio.plugins.jpeg.JPEGImageReader.readImageHeader(Native Method) 
    at com.sun.imageio.plugins.jpeg.JPEGImageReader.readNativeHeader(JPEGImageReader.java:550) 
    at com.sun.imageio.plugins.jpeg.JPEGImageReader.checkTablesOnly(JPEGImageReader.java:295) 
    at com.sun.imageio.plugins.jpeg.JPEGImageReader.gotoImage(JPEGImageReader.java:427) 
    at com.sun.imageio.plugins.jpeg.JPEGImageReader.readHeader(JPEGImageReader.java:543) 
    at com.sun.imageio.plugins.jpeg.JPEGImageReader.readInternal(JPEGImageReader.java:986) 
    at com.sun.imageio.plugins.jpeg.JPEGImageReader.read(JPEGImageReader.java:966) 
    at javax.imageio.ImageIO.read(ImageIO.java:1448) 
    at javax.imageio.ImageIO.read(ImageIO.java:1400) 

Java的圖像閱讀器是否已知脆弱?有沒有更強大的Java庫來加載圖像?

+0

你的代碼在哪裏? – Gevorg 2012-04-11 14:54:12

回答

2

嗨請嘗試以下操作,這在java 1.6中沒有任何問題?它是否給出同樣的例外?

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

import javax.imageio.ImageIO; 
import javax.swing.ImageIcon; 
import javax.swing.JFrame; 
import javax.swing.JLabel; 

public class ShowImage { 
    public static void main(String[] args) { 
     JFrame frame = new JFrame("Debug Frame"); 
     frame.setSize(200, 200); 
     frame.setLayout(new BorderLayout()); 
     frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 

     Image image = null; 
     JLabel label = null; 

     try { 
      image = ImageIO.read(new File("c:/scratch/hotdog.jpg")); 
      label = new JLabel(new ImageIcon(image)); 
     } catch (IOException e) { 
      label.setText("Image loading failed"); 
     } 

     frame.add(label,BorderLayout.CENTER); 
     frame.setVisible(true); 
    } 
} 
0

不知道你想做什麼,也正是在你的代碼,這行拋出一個NullPointerException異常,但是下面的Java 6中工作片:

String imageUrl = "http://taste-for-adventure.tablespoon.com/files/2012/02/2012-02-05-poll-hotdog-275w.jpg"; 
BufferedImage bi = ImageIO.read(new URL(imageUrl)); 
if(bi != null) 
    System.out.println("Image Loaded!"); 
else 
    System.out.println("Something's wrong..."); 

對不起,但我不能測試它現在在Java 7中...

相關問題