category: Java
DATE : 2006/08/21 (Mon)
DATE : 2006/08/21 (Mon)
java.awt.image.RenderedImage から java.awt.image.BufferedImage を生成するには、次のような手順で行います。
- RenderedImage からカラーモデル(java.awt.image.ColorModel)とラスター(java.awt.image.Raster)を取得する。
- ラスターは読み取り専用なので、書き換え可能なラスター(java.awt.image.WritableRaster )を取得する。
- WritableRaster と ColorModel から、BufferedImage を生成する。
コードにすると、次のようになります。ここで、source は BufferedImage を生成するための RenderedImage です。(import 文などは省略してあります)
ColorModel colorModel = source.getColorModel();
WritableRaster raster = source.getData().
createCompatibleWritableRaster();
BufferedImage image = new BufferedImage(colorModel, raster,
colorModel.isAlphaPremultiplied(), null);
コードに示したとおり、BufferedImage には、WritableRaster や ColorModel からインスタンスを生成できるコンストラクタがあります。
その最後から2番目の引数は、アルファ値を Raster のデータにあらかじめ乗算しておくかどうかを指定します。ここでは特にこだわらないため、ColorModel の設定どおりにしました。
また最後の引数は java.util.Hashtable で、画像のプロパティを設定できます。ただし、今回はプロパティがないので null にしました。(BufferedImage のソースコードを見たところ、null に対応するコードがあったので、特に問題はないと思います)
参考文献
PR
●この記事にコメントする
忍者ブログ [PR]