0

javax.imageio.ImageIO.read()メソッドを使用してPNG画像を読み込もうとしています。ただし、結果のタイプを「BufferedImage.TYPE_4BYTE_ABGR」にしたいのですが、最終的にはインデックス付きの画像( "BufferedImage.TYPE_BYTE_INDEXED")になります。元の画像がインデックスに登録されているときに、インデックスが作成されていない画像を読み込む方法はありますか?画像は約120枚あるので、手作業ですべてのインデックスを解除するには時間がかかりすぎます。

4

1 に答える 1

0

JAI の使用に反対しない場合は、RenderedImage のレンダリング チェーンを作成し (BufferedImage がインターフェイスを実装します)、チェーンにフォーマット操作を追加できます。

JAI.KEY_REPLACE_INDEX_COLOR_MODEL のキーを持つレンダリング ヒントを使用した JAI.create("format",...) 操作。

純粋な ImageIO アプローチは、必要なタイプの新しい BufferedImage を作成し、ImageIO.read からロードされたものを新しい BufferedImage に描画することです。

BufferedImage image = ImageIO.read(inputFile);
BufferedImage convertedImage = new BufferedImage(image.getWidth(), 
    image.getHeight(), BufferedImage.TYPE_4BYTE_ABRG);
convertedImage.createGraphics().drawRenderedImage(image, null);
于 2011-04-22T01:53:23.283 に答える