我是用这个方法读图片,然后draw到Component上
之前读了一张1KB的GIF格式图片没问题,之后换了张200+KB的JPEG格式图片就不行了
抛出如下异常:
javax.imageio.IIOException: Can't read input file!
at javax.imageio.ImageIO.read(ImageIO.java:1275)
at gui.ImageComponent.<init>(ImageTest.java:47)
at gui.ImageFrame.<init>(ImageTest.java:33)
at gui.ImageTest$1.run(ImageTest.java:16)
at java.awt.event.InvocationEvent.dispatch(InvocationEvent.java:209)
at java.awt.EventQueue.dispatchEvent(EventQueue.java:597)
at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:269)
at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:184)
at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:174)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:169)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:161)
at java.awt.EventDispatchThread.run(EventDispatchThread.java:122)
请问这个方法对参数f的大小有限制吗?或者对图片格式有限制吗?

解决方案 »

  1.   

    我做了一个ImageIOTest,是可以选择文件的,我用它显示了一个1.79M的JPG图片,我把代码发出来,你测试下。
    你也把你的代码贴出来,大家研究下。
    import java.awt.BorderLayout;
    import java.awt.Button;
    import java.awt.Canvas;
    import java.awt.Frame;
    import java.awt.Graphics;
    import java.awt.TextField;
    import java.awt.event.ActionEvent;
    import java.awt.event.ActionListener;
    import java.awt.event.WindowAdapter;
    import java.awt.event.WindowEvent;
    import java.awt.image.BufferedImage;
    import java.io.File;
    import java.io.IOException;
    import javax.imageio.ImageIO;
    import javax.swing.JFileChooser;public class ImageIOTest extends Frame implements ActionListener {
    TextField tf = new TextField();
    Canvas c = new Canvas();
    BufferedImage bi = null;
    Graphics g = null;
    public ImageIOTest() {
    this.setTitle("ImageIO test");
    this.setSize(200, 200);
    this.add(tf, BorderLayout.NORTH);
    this.add(c, BorderLayout.CENTER);
    this.setVisible(true);
    Button b1 = new Button("xuanze");
    b1.addActionListener(this);
    this.add(b1, BorderLayout.SOUTH);
    this.addWindowListener(new WindowAdapter() {
    public void windowClosing(WindowEvent arg0) {
    System.exit(0);
    }
    });
    this.setResizable(false);
    } public static void main(String[] args) {
    new ImageIOTest().setVisible(true);
    } public void actionPerformed(ActionEvent e) {
    String url;
    JFileChooser chooser = new JFileChooser();
    int state = chooser.showOpenDialog(null);
    File file = chooser.getSelectedFile();
    if (file != null && state == JFileChooser.APPROVE_OPTION) {
    url = file.getAbsolutePath();
    tf.setText(url);
    try {
    bi = ImageIO.read(new File(url));
    g = c.getGraphics();
    g.drawImage(bi, 1, 1, 100, 100, 1, 1, bi.getWidth(), bi.getHeight(), this);
    } catch (IOException e1) {
    // TODO Auto-generated catch block
    e1.printStackTrace();
    }
    }
    }
    }
      

  2.   

     File src = new File("E:/3(1)/a.jpg") ;
    Image image = ImageIO.read(src) ;E:/3(1)/是我在电脑上建的文件夹。为什么也是报错说javax.imageio.IIOException: Can't read input file!啊,那个路径名到底该怎么弄呢?求问