//           String path = PropertityUtils.getValue("picPath")+imagePath;
String path = "E:/a.gif";
File srcFile = new File(path);

if(srcFile.exists()){

try {
BufferedImage srcImg = ImageIO.read(srcFile);
BufferedImage buffImg = null;
buffImg = new BufferedImage(srcImg.getWidth(null), srcImg.getHeight(null), BufferedImage.TYPE_INT_RGB);
 java.awt.Image image =Toolkit.getDefaultToolkit().createImage( TestImageBinary.class.getResource(path));
 buffImg.getGraphics().drawImage(image, 0,0, null);
 
//  buffImg.getGraphics().drawImage(
// srcImg.getScaledInstance(srcImg.getWidth(null), srcImg.getHeight(null), BufferedImage.SCALE_SMOOTH), 0,
// 0, null);

buffImg.getGraphics().dispose();
ImageIO.write(buffImg, "JPEG", response.getOutputStream());
} catch (IOException  e) {
// TODO Auto-generated catch block
e.printStackTrace();
}


}
以上是我的代码
报错信息Uncaught error fetching image:
java.lang.NullPointerException
at sun.awt.image.URLImageSource.getConnection(URLImageSource.java:116)
at sun.awt.image.URLImageSource.getDecoder(URLImageSource.java:126)
at sun.awt.image.InputStreamImageSource.doFetch(InputStreamImageSource.java:263)
at sun.awt.image.ImageFetcher.fetchloop(ImageFetcher.java:205)
at sun.awt.image.ImageFetcher.run(ImageFetcher.java:169)
DEBUG[com.frontdo.travel.interceptor.AuthInterceptor]-信息:request /travel/action/acquireUploadImage,prcess time :244ms
DEBUG[org.mybatis.spring.SqlSessionUtils]-信息:Creating a new SqlSession页面显示
黑屏 只有个宽高

解决方案 »

  1.   

    用FileInputStream吧,管它是文本还是图片,都可以还原,
      

  2.   

    看报错,创建img失败了。先用字节流读取下,再调用下边
    Image image = Toolkit.getDefaultToolkit.createImage(byte[] args)
    ImageIcon imgIcon = new ImageIcon(image)
      

  3.   

    这样编译不通过
    怎么会编译不通过,报的什么错?ImageIcon这里?
      

  4.   

    这样编译不通过
    怎么会编译不通过,报的什么错?ImageIcon这里?
    通过了  又出新错误了 
    java.lang.OutOfMemoryError: Java heap space
    BufferedImage srcImg = ImageIO.read(srcFile);
    BufferedImage buffImg = null;
    buffImg = new BufferedImage(srcImg.getWidth(null), srcImg.getHeight(null), BufferedImage.TYPE_INT_RGB);
    FileInputStream inStream = new FileInputStream(srcFile);
    byte[] inOutb = new byte[inStream.available()];
    java.awt.Image image =Toolkit.getDefaultToolkit().createImage(inOutb);
    ImageIcon imgIcon = new ImageIcon(image);
    buffImg.getGraphics().drawImage(image, 0,0, null);
     
    //  buffImg.getGraphics().drawImage(
    // srcImg.getScaledInstance(srcImg.getWidth(null), srcImg.getHeight(null), BufferedImage.SCALE_SMOOTH), 0,
    // 0, null);

    buffImg.getGraphics().dispose();
    ImageIO.write(buffImg, "JPEG", response.getOutputStream());
      

  5.   

    这样编译不通过
    怎么会编译不通过,报的什么错?ImageIcon这里?通过了  又出新错误了 
    java.lang.OutOfMemoryError: Java heap space
    BufferedImage srcImg = ImageIO.read(srcFile);
    BufferedImage buffImg = null;
    buffImg = new BufferedImage(srcImg.getWidth(null), srcImg.getHeight(null), BufferedImage.TYPE_INT_RGB);
    FileInputStream inStream = new FileInputStream(srcFile);
    byte[] inOutb = new byte[inStream.available()];
    java.awt.Image image =Toolkit.getDefaultToolkit().createImage(inOutb);
    ImageIcon imgIcon = new ImageIcon(image);
    buffImg.getGraphics().drawImage(image, 0,0, null);
     
    //  buffImg.getGraphics().drawImage(
    // srcImg.getScaledInstance(srcImg.getWidth(null), srcImg.getHeight(null), BufferedImage.SCALE_SMOOTH), 0,
    // 0, null);

    buffImg.getGraphics().dispose();
    ImageIO.write(buffImg, "JPEG", response.getOutputStream());内存溢出java 堆内存溢出了 重启再试下   这是设置的有多大
      

  6.   

    这样编译不通过
    怎么会编译不通过,报的什么错?ImageIcon这里?通过了  又出新错误了 
    java.lang.OutOfMemoryError: Java heap space
    BufferedImage srcImg = ImageIO.read(srcFile);
    BufferedImage buffImg = null;
    buffImg = new BufferedImage(srcImg.getWidth(null), srcImg.getHeight(null), BufferedImage.TYPE_INT_RGB);
    FileInputStream inStream = new FileInputStream(srcFile);
    byte[] inOutb = new byte[inStream.available()];
    java.awt.Image image =Toolkit.getDefaultToolkit().createImage(inOutb);
    ImageIcon imgIcon = new ImageIcon(image);
    buffImg.getGraphics().drawImage(image, 0,0, null);
     
    //  buffImg.getGraphics().drawImage(
    // srcImg.getScaledInstance(srcImg.getWidth(null), srcImg.getHeight(null), BufferedImage.SCALE_SMOOTH), 0,
    // 0, null);

    buffImg.getGraphics().dispose();
    ImageIO.write(buffImg, "JPEG", response.getOutputStream());内存溢出java 堆内存溢出了 重启再试下   这是设置的有多大
    重启了 也没用  byte[] inOutb = new byte[inStream.available()]; 这里报错
      

  7.   

    这样编译不通过
    怎么会编译不通过,报的什么错?ImageIcon这里?通过了  又出新错误了 
    java.lang.OutOfMemoryError: Java heap space
    BufferedImage srcImg = ImageIO.read(srcFile);
    BufferedImage buffImg = null;
    buffImg = new BufferedImage(srcImg.getWidth(null), srcImg.getHeight(null), BufferedImage.TYPE_INT_RGB);
    FileInputStream inStream = new FileInputStream(srcFile);
    byte[] inOutb = new byte[inStream.available()];
    java.awt.Image image =Toolkit.getDefaultToolkit().createImage(inOutb);
    ImageIcon imgIcon = new ImageIcon(image);
    buffImg.getGraphics().drawImage(image, 0,0, null);
     
    //  buffImg.getGraphics().drawImage(
    // srcImg.getScaledInstance(srcImg.getWidth(null), srcImg.getHeight(null), BufferedImage.SCALE_SMOOTH), 0,
    // 0, null);

    buffImg.getGraphics().dispose();
    ImageIO.write(buffImg, "JPEG", response.getOutputStream());内存溢出java 堆内存溢出了 重启再试下   这是设置的有多大
    现在不报错了   但还是 黑屏
      

  8.   

    为什么不使用img标签显示就好了???