最初使用 jfilechooser 将 jpg 文件上传到项目但切换到 jFileDialog 因为我想在缩略图视图中获取图像。但是当我运行该项目时,我收到此错误消息:
javax.imageio.IIOException:Cant read input file!
这是下面的代码:
FileDialog fd = new FileDialog(this,"Choose a File",FileDialog.LOAD);
fd.setDirectory("C:\\");
fd.setFile("*.jpg;*.jpeg");
fd.setVisible(true);
filename = fd.getFile();
if(filename==null){
}else{
try{
File imgs =new File(filename);
BufferedImage bufferedimage=ImageIO.read(imgs);
BufferedImage thumbnail=Thumbnails.of(bufferedimage)
.size(145, 141)
.asBufferedImage();
ByteArrayOutputStream os = new ByteArrayOutputStream();
ImageIO.write(thumbnail,"jpeg", os);
InputStream is=new ByteArrayInputStream(os.toByteArray());
ByteArrayOutputStream bos = new ByteArrayOutputStream();
byte[] buf =new byte[1024];
try{
for(int readNum; (readNum=is.read(buf))!=-1;){
bos.write(buf,0,readNum);
System.out.println("Read" +readNum+ "bytes,");
}
}catch(IOException ex){
Logger.getLogger(null);
}
person_image=bos.toByteArray();
}catch(Exception e){
JOptionPane.showMessageDialog(null, e);
}finally{
try{
rs.close();
pst.close();
}
catch(Exception e){
}
}
我认为问题来自本节:
File imgs =new File(filename);
BufferedImage bufferedimage=ImageIO.read(imgs);
它似乎没有得到文件。请问我做错了什么?
我只是测试了一下,FileDialog.getFile 方法只返回文件名,而不是完整路径!要获取目录,您必须调用 FileDialog.getDirectory
解决此问题的最简单方法是简单地连接目录和文件。
filename = fd.getDirectory() + File.seperator + fd.getFile();
我不完全确定您是否需要 File.seperator,因为 fd.getDirectory 可能已经在最后有文件分隔符,并且您会得到多个分隔符。
要解决这个问题,请使用:
filename = new File(new File(fd.getDirectory()), fd.getFile()).getPath();
或者只是直接存储文件,最后没有 .getPath 并且不要将字符串存储到路径中。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句