私はTIFFファイルを持っていますが、どの圧縮を使用したのか知りたいのですが、ImageIOを使用してそれを実現する方法はありますか?私はIIOMetadata
オブジェクトからこの情報を得ることに失敗しました。私は最初にこのファイルからBufferedImage
を作成し、それを処理して元の同じ名前の異なる同じ圧縮で保存しようとします。この圧縮名が常にプラグインのImageWriteParam
によってサポートされている圧縮タイプ名と一致しない場合があることImageIOを使用してファイル圧縮に関する情報を取得する方法は?
ImageReader reader = ...;
IIOMetadata metadata = reader.getImageMetadata(0); // 0, first image
IIOMetadataNode root = (IIOMetadataNode) metadata.getAsTree(IIOMetadataFormatImpl.standardMetadataFormatName);
IIOMetadataNode compression = (IIOMetadataNode) root.getElementsByTagName("CompressionTypeName").item(0);
String compressionName = compression.getAttribute("value");
System.out.printf("Compression: %s", compressionName);
注:次のコードは、(人間が読める形で)あなたの圧縮を与えるImageIOでのAPIを使用して
本当に保存したファイルが必要ですか、情報を取得するために保存していますか?読み込みや保存でデータが壊れる可能性があるため(たとえば、Javaが完全にサポートしていないtiffやその他のオプションの複数ページのプロパティなど)、情報の保存のみが必要な場合は、悪い考えです。あなたはファイル情報が必要です私はImageIOをまったく使用しません - ファイルを直接解析するか、またはこれを行うライブラリを使用します。 – Robert
私は本当にそれを処理し、それを保存する必要があります - 通常、いくつかの部分で、私は元のものと同じ圧縮タイプでそれらを永続化したい。 –
あなたは 'tiffdump YourImage.tif | grep Compression 'を実行し、TIFFタグ259を参照して値を解釈する。 –