0

次のように、別のイメージから新しいイメージを作成するだけです。

  public static void scaleByTwoRight(String src, String dest)
    throws IOException {
           BufferedImage bsrc = ImageIO.read(new File(src));
           int width          = bsrc.getWidth()/2;
           int height         = bsrc.getHeight();
           BufferedImage bdest = bsrc.getSubimage(width, 0, width, height);
           ImageIO.write(bdest,"PNG",new File(dest));
  }

ソースファイル (src) = C:...\Manga\Shonan Juna_ 組本 11\Shonan Junaï Gumi Tome 11 - 091B.png 宛先ファイル (dest) = C:...\Manga\Shonan Junaï Gumi Tome 11 - 091B_A .png

生成されたファイルの例: https://docs.google.com/file/d/0B1vKCZzB5hxqYzNsUWF5RHA2Wm8/edit?usp=sharing

問題: 新しいイメージには mimetype: image ではなく mimetype: application があります

この結論に到達する方法: 関数を使用して、ファイルが画像かどうかをテストしています。

public static boolean isImage(String src)
    throws IOException {
          File f = new File(src);
          String mimetype= new MimetypesFileTypeMap().getContentType(f);
          String type = mimetype.split("/")[0];
          if(type.equals("image")){
              return true;
          }else{ 
              System.out.println("mimetype: "+type);
              return false;
          }
  } 

Mime タイプが正しくなくても大きな影響はありませんが、適切に動作することを好みます..

ご協力いただきありがとうございます!

注: Windows 7 / 32b JVM 1.7 / Eclipse Helios で実行しています。

4

1 に答える 1

0

あなたのコードは私のマシンで正常に動作しています。私はWindows XP、32ビットを持っています。jpeg画像で試してみましたが、MIMEタイプは画像/jpegのみとして返されます。両方の機能を同時に実行しようとしていないことを願っています。また、宛先ファイル名には、.jpeg などの適切な拡張子が含まれている必要があります。pngなど...

于 2013-04-12T09:34:34.413 に答える