2016-05-19 40 views
0

JPEG2000(.jp2)イメージを他の形式(JPEGまたはPNG)に変換しようとしていますので、javax.imageioパッケージの書き込みメソッドを使用しようとしています。これは他のフォーマット(JPEGからPNGなど)でうまく動作しますが、JPEG2000(またはTIFF)では例外をスローします。誰でも入力画像の可能な形式は何ですか?ImageIOを使用してJPEG2000からPNGに変換する

Exception in thread "main" java.lang.IllegalArgumentException: im == null! 
    at javax.imageio.ImageIO.write(ImageIO.java:1457) 
    at javax.imageio.ImageIO.write(ImageIO.java:1565) 
    at decodeincodeimages.AndroidInterface.convertFormat(AndroidInterface.java:199) 
    at Main_package.Execute.main(Execute.java:69) 

Java Result: 1 

そして、これはメソッドです:

public static boolean convertFormat(String inputImagePath, 
     String outputImagePath, String formatName) throws IOException { 
    FileInputStream inputStream = new FileInputStream(inputImagePath); 
    FileOutputStream outputStream = new FileOutputStream(outputImagePath); 

    // reads input image from file 
    BufferedImage inputImage = ImageIO.read(inputStream); 

    // writes to the output image in specified format 
    boolean result = ImageIO.write(inputImage, formatName, outputStream); 

    // needs to close the streams 
    outputStream.close(); 
    inputStream.close(); 

    return result; 
} 

そして、私はこのようにそれを呼び出す:

System.out.println(AndroidInterface.convertFormat("g:\\picture.jp2","g:\\conv.gif", "gif")); 
+0

は、多分あなたは、この記事https://blog.idrsolutions.com/2015/04/how-toを参照してください必要があります(このリストは網羅的なものではなく、Googleはあなたがより多くの:-)を見つけるのに役立つかもしれません) -read-jpeg2000-in-java / –

答えて

2

ImageIOには、内蔵の以下のフォーマットが付属しています:BMP、GIF、JPEG、PNG 、WBMP(出典:the API documentation)。別の形式の画像を読み込もうとすると、ImageIO.read(...)のメソッドは単にnullを返すため、メソッドの後にIllegalArgumentException: im == nullが表示されます。

しかし、ImageIOでは、プラグインメカニズム(サービスプロバイダインターフェイスまたはSPI)も使用して、追加のプラグインまたはサードパーティのプラグインをインストールできます。

JPEG2000またはTIFFを読むには、そのようなプラグインが必要です。

  • 最高のオプションはおそらくJAIです。 JAIにはTIFFプラグインもあります。 JAIはSun(現在のOracle)によって開発されましたが、残念ながら、何年もの更新とバグ修正はありませんでした。

  • JPEG2000のImageIOプラグインを含むOpenJPEG用のJavaバインディングもあります。

  • TIFFの場合は、TwelveMonkeys ImageIO TIFFプラグインを使用することもできます。 TwelveMonkeysは現在JPEG2000プラグインを持っていないので、あまり役に立たないかもしれません。

関連する問題