0
GIF画像合成出力後背景が黒くなる
すみません。
GIF画像合成について教えてください。
今GIFの画像合成にチャレンジしています。
透過GIFの画像合成後、背景が黒になります。
どなたか背景を透過にする方法を教えていただけませんでしょうか。
ソースは以下です。
※合成前までは、透過になっている模様です。
jdk6です。
--------------------------------------------------
import java.awt.Image;
import java.awt.image.BufferedImage;
import java.io.File;
import javax.imageio.ImageIO;
public class ConvertImgGif {
private static String file1 = rootDir + "001.gif";
private static String file2 = rootDir + "002.gif";
private static String fileOk = rootDir + "sample.gif";
private int width;
private int height;
public ConvertImgGif() {
}
public static void main(String[] args) {
try {
ConvertImgGif cig = new ConvertImgGif();
BufferedImage image = ImageIO.read(new File(file1));
cig.setWH(image);
image = cig.conflateImage(image);
image = cig.convert(image);
if(image.getColorModel().hasAlpha()){
System.out.printf("透過である");
} else {
System.out.printf("透過でない");
}
ImageIO.write(image, "GIF", new File(fileOk));
} catch (Exception ex) {
ex.printStackTrace();
}
}
/**
* 画像サイズ取得して設定
*/
public void setWH(BufferedImage image) {
this.width = image.getWidth();
this.height = image.getHeight();
}
/**
* 画像合成
*/
public BufferedImage conflateImage(BufferedImage image) {
BufferedImage ci = null;
BufferedImage ct = null;
try {
ci = new BufferedImage(width, height, image.getType());
ct = ImageIO.read(new File(file2));
ci.getGraphics().drawImage(
image.getScaledInstance(width, height, Image.SCALE_AREA_AVERAGING), 0, 0, null);
ci.getGraphics().drawImage(
ct.getScaledInstance(ct.getWidth(),
ct.getHeight(),
Image.SCALE_AREA_AVERAGING),
0, 0, null);
} catch (Exception ex) {
ex.printStackTrace();
}
return ci;
}
/**
* 画像をGIFに変換
*/
public BufferedImage convert (BufferedImage image) {
BufferedImage convertedImage
= new BufferedImage(image.getWidth(),
image.getHeight(),
BufferedImage.TYPE_INT_ARGB);
convertedImage.getGraphics().drawImage(image, 0, 0, null);
return convertedImage;
}
}
--------------------------------------------------