Javaに関する様々な情報をご紹介します。

Javaに関する様々な情報をご紹介します。
評価

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;
    }
}

--------------------------------------------------

2

回答

82589

閲覧

2件の回答

評価

0

gifって_INDEXEDじゃなかったっけ?

評価

0

黒くなるのはたぶん、ファイルが無い/読み込めていないからではないですか?

質問から6ヶ月以上経過しているので、回答を書き込むことはできません。