BufferedImage#getTypeメソッドに関する質問があります。java.awt.image.BufferedImage#getTypeが異なる値を返す理由Mac&CENTOS
Javaのバージョン "1.6.0_03" のJava(TM)SE:ファイルシステムからPNG画像を参照する場合、次のコードは、このJVMとCentOSのボックスで、私のMacでとを印刷しますランタイム環境(1.6.0_03-B05を構築) は、Java HotSpot(TM)64ビットサーバーVM(1.6.0_03-B05、混合モードを構築する)
import java.awt.*;
import java.awt.geom.AffineTransform;
import java.awt.image.BufferedImage;
import javax.imageio.ImageIO;
import java.io.*;
public class ImageTypeTest {
public static void main(String[] args) throws Exception{
BufferedImage sourceImage = ImageIO.read(new File("/path/to/png.png"));
System.out.println(sourceImage.getType());
}
}
誰が何であるかに関して、いくつかの光を当てるてくださいすることができ私はそれを回避することができるようにこの違いを引き起こす?このコードは、GIF画像など、他の画像タイプと同じ値を返します。必要ImageIOでの契約では何もないとして、彼らはに許可されている -
は、違いの理由は、OS XとのCentOSのJava実装はPNG画像を解析するために別の基礎となるライブラリを使用することである
これは完全に正常です。あなたは* "それを回避する" *とは何を意味しますか?必要なタイプの独自のBufferedImageをインスタンス化し、そのBufferedImageで読み取ったイメージをコピーできます。 AFAIKでは、ImageIO.readに必要なBufferedImageタイプを直接作成させることはできません。また、独自のBufferedImageタイプを強制すると、ターゲットとしているさまざまなプラットフォームで画像を操作したときに最適でないパフォーマンスが得られる可能性があることにも注意してください。 – SyntaxT3rr0r
こんにちはWebinator、私はそれが正常であることを理解しています。質問は、原因は何ですか?異なるオペレーティングシステムで同じイメージに対して異なるイメージタイプを取得するのはなぜですか?それは私が理解していないものです。なぜなら、それがまったく同じイメージファイルであれば、どうして違うのでしょうか?お返事をありがとうございます。 – Ytsejammer