2

こんにちは私は転送されたbufferedImageをディスクに保存する必要があるfollowed関数に問題があります。このコードを実行すると、例外は発生せず、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;
}

手伝ってくれてありがとう!

4

3 に答える 3

5

問題は、ファイル形式を内線として指定することです

事実上あなたの発言

ImageIO.write(img, ".jpg" ,fileToSave)

あなたはそれが評価されるようにそれを供給する必要があります

ImageIO.write(img, "jpg" ,fileToSave)
于 2012-08-01T09:55:33.390 に答える
2

ImageIO.writeの拡張子は、のよう"PNG"になり"JPG"ます。ポイントなし。

そして、if (extension.equals("..."))アプローチは非常に悪いです。実際に拡張機能を提供したことを確認してください。IE:ifの少なくとも1つが成功しました。ext書き込む直前に印刷して、正しい値かどうかを確認してください。

System.out.println("Extension: " + ext);

ああ、javax.imageioPNG、JPG、JPEG(およびGIF読み取り専用)のみをサポートします。サポートされている形式のリストを動的に取得するには、次を使用します。

ImageIO.getWriterFormatNames();
于 2012-08-01T09:53:21.487 に答える
0

ここに間違いがあるかもしれません: JFileChooser FC=new JFileChooser("C:/"); ファイル パスを "C:\" (または二重バックスラッシュ) に変更します。

于 2012-08-01T10:05:33.307 に答える