PNGに保存するには ImageIO.wtite を使いたいので、
BufferedImage にしておく必要がある。
Image の拡大
いろいろ方法はありそうだが、一番簡単そうなのは
java.awt.Image#getScaledInstance を使う方法。
private static Image magnifyImage(Image img, int scale) {
int width = img.getWidth();
int height = img.getHeight();
Image scaledImage = img.getScaledInstance(
width * scale, height*scale, Image.SCALE_DEFAULT);
return scaledImage;
}
Image から BufferedImage に変換する方法
Image#getScaledInstance を使うと、拡大したイメージは、
java.awt.Image になってしまうので、
ImageIO.write を使うためには、
java.awt.image.BufferedImage に変換する必要がある。
private static BufferedImage convertImageToBufferedImage(Image img) {
BufferedImage bimg = new BufferedImage(
img.getWidth(null), img.getHeight(null),
BufferedImage.TYPE_INT_ARGB);
Graphics g = bimg.getGraphics();
g.drawImage(img, 0, 0, null);
g.dispose();
return bimg;
}
すでに大きさが確定しているイメージを使うので Image.getWidth で Observer を指定する必要はない。
この方法の難点は透過情報(アルファチャンネル)を失ってしまうことだが、 今回は アルファ情報はいらないのでこれで良しとする。
0 件のコメント:
コメントを投稿