1

IndexColorModelを持つBufferedImageがあります。その画像を画面にペイントする必要がありますが、IndexColorModelを使用するとこれが遅いことに気付きました。ただし、アイデンティティアフィン変換を介してBufferedImageを実行すると、DirectColorModelを使用して画像が作成され、ペイントが大幅に高速化されます。これが私が使っているコードです

AffineTransformOp identityOp = new AffineTransformOp(new AffineTransform(), AffineTransformOp.TYPE_BILINEAR);
displayImage = identityOp.filter(displayImage, null);

3つの質問が
あります1.IndexColorModelでペイントが遅くなるのはなぜですか?
2. IndexColorModelのペイントを高速化する方法はありますか?
3. 2.の答えが「いいえ」の場合、これはIndexColorModelからDirectColorModelに変換する最も効率的な方法ですか。この変換は画像のサイズに依存していることに気づきました。その依存関係を削除したいと思います。

助けてくれてありがとう

4

1 に答える 1

1

コメントするには長すぎます...

作成しているBufferedImageが、使用している OS に応じて最適であると確信していますか? 常に「互換性のある」BufferedImage を作成する必要があります。たとえば、Windows では最速かもしれませんTYPE_INT_ARGBが、OS X ではそうではなく、その逆も同様です。

このようなもの(ああ、デメテルの法則は痛い;):

GraphicsEnvironment
        .getLocalGraphicsEnvironment()
        .getDefaultScreenDevice()
        .getDefaultConfiguration()
        .createCompatibleImage(width, height,Transparency.TRANSLUCENT)
于 2010-03-27T03:26:10.017 に答える