JPEG画像では、EXIFメタデータが含まれている場合があり、画像をどのような方向で表示するかを指示します。ImageIO.read()はEXIF方向メタデータを考慮していますか?
質問は、JavaのImageIO.read()
がJPEG画像を読んでいる間にEXIFを考慮して自動的に変換を適用するかどうかです。
より具体的には、EXIFを使用してJPEG画像をPNG画像に変換するためにJavaのImageIO
を使用する場合、PNG画像の向きは正しいでしょうか?または、EXIFオリエンテーションの指示を考慮に入れずに、PNG画像を生成する以下のコードですか?
private byte[] convertToPng(byte[] imageFileAsByteArray) {
ByteArrayInputStream bis = new ByteArrayInputStream(imageFileAsByteArray);
BufferedImage bi = ImageIO.read(bis);
ByteArrayOutputStream bos = new ByteArrayOutputStream();
ImageIO.write(bi, "png", bos);
return bos.toByteArray();
}
'ImageIO.read()'はあなたのexifを読み込みません。 ImageReaderクラスを使用してイメージメタデータを読み込んでコピーする必要があります – Uata
メタデータをコピーしたくありません。 PNGイメージにはEXIFエントリもありません。 EXIF値に従って画像を変換してから別の形式で保存したいのですが、EXIFエントリを忘れてしまいました。 – SomethingSomething
はい、PNGです。私はこれを忘れて申し訳ありません。しかし、とにかくメタデータを手動で抽出し、それを使ってイメージを変換する必要があります。このライブラリも良いです:https://github.com/drewnoakes/metadata-extractor – Uata