关于 imageIO.read(File f) 的问题

时间:2021-04-15 21:20:47
我是用这个方法读图片,然后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的大小有限制吗?或者对图片格式有限制吗?

4 个解决方案

#1


我和你的问题相似,顶一下!

#2


我做了一个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();
}
}
}
}

#3


 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!啊,那个路径名到底该怎么弄呢?求问

#4


我也是这个问题

#1


我和你的问题相似,顶一下!

#2


我做了一个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();
}
}
}
}

#3


 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!啊,那个路径名到底该怎么弄呢?求问

#4


我也是这个问题