你好我的跟随功能有问题,应该在磁盘上保存转发的bufferedImage。当我运行此代码时没有异常抛出没有问题,BufferedImage被转移到ImageIO.write(img,ext,fileToSave)文件被创建,ext是正确的但我的磁盘上没有图像!几小时后,我不知道会出现什么问题。也许允许?但我有它在磁盘上读/写。
public boolean SaveImage(BufferedImage img)
{
JFileChooser FC=new JFileChooser("C:/");
FC.addChoosableFileFilter(new jpgSaveFilter());
FC.addChoosableFileFilter(new jpegSaveFilter());
FC.addChoosableFileFilter(new PngSaveFilter());
FC.addChoosableFileFilter(new gifSaveFilter());
FC.addChoosableFileFilter(new BMPSaveFilter());
FC.addChoosableFileFilter(new wbmpSaveFilter());
int retrival=FC.showSaveDialog(null);
if (retrival == FC.APPROVE_OPTION)
{
String ext="";
String extension=FC.getFileFilter().getDescription();
if(extension.equals("*.jpg,*.JPG"))
{
ext=".jpg";
}
if(extension.equals("*.png,*.PNG"))
{
ext=".png";
}
if(extension.equals("*.gif,*.GIF"))
{
ext=".gif";
}
if(extension.equals("*.wbmp,*.WBMP"))
{
ext=".wbmp";
}
if(extension.equals("*.jpeg,*.JPEG"))
{
ext=".jpeg";
}
if(extension.equals("*.bmp,*.BMP"))
{
ext=".bmp";
}
File fileToSave = FC.getSelectedFile();
try{
ImageIO.write(img, ext ,fileToSave);
}
catch (IOException e) {
e.printStackTrace();
}
catch(Exception ex)
{
System.out.println(ex.getMessage());
return false;
}
return true;
}
return false;
}
感谢您的帮助!
答案 0 :(得分:5)
问题是您将文件格式指定为ext
有效地说你的话
ImageIO.write(img, ".jpg" ,fileToSave)
您需要提供它,以便评估为
ImageIO.write(img, "jpg" ,fileToSave)
答案 1 :(得分:2)
ImageIO.write中的扩展名应该与"PNG"
,"JPG"
类似。没有意义。
if (extension.equals("..."))
方法非常糟糕。确保您确实提供了扩展程序。 IE:至少有一个if成功了。尝试在写作之前打印ext
,以检查它是否具有正确的值。
System.out.println("Extension: " + ext);
哦,javax.imageio
仅支持PNG,JPG,JPEG(和GIF只读)。要动态获取支持的格式列表,请使用:
ImageIO.getWriterFormatNames();
答案 2 :(得分:0)
错误可能在这里:JFileChooser FC = new JFileChooser(“C:/”); 将文件路径更改为“C:\”(或双反斜杠)