1

GifDecoderアニメーション化された .gif ファイルの読み取りとAnimGifEncoder書き込みに使用しています。(リンク)

読み取った元のフレームをGifDecoder表示すると正しく表示されAnimatedGifEncoder、透明になりますが、透明度によって作成されたフレームを表示するとすべて間違っています。

   GifDecoder gif = new GifDecoder();
   gif.read("image.gif");

   AnimatedGifEncoder e = new AnimatedGifEncoder();
   e.start("newimage.gif");
   e.setTransparent(Color.BLACK);

   for (int i=0;i<gif.getFrameCount();i++) {
        anim.addFrame(gif.getFrame(i));
        anim.setDelay(gif.getDelay(i));
   }

   anim.finish();

この例では、透明色を黒に設定しています。しかし、実際には から透明色の情報を取得したいのですが、GifDecoder方法がわかりません。

4

2 に答える 2

1

私は次の解決策を使用していますが、スケーリング後に混乱しているいくつかの gif ファイルがまだあります... :

(少なくとも、ほとんどの不透明な gif とうまくいくようです)

Color transparentColor = null;
BufferedImage firstFrameImage = ImageIO.read([sourceFileHere]);

if (firstFrameImage.getColorModel() instanceof IndexColorModel) {
   IndexColorModel cm = (IndexColorModel) firstFrameImage.getColorModel();
   int transparentPixel = cm.getTransparentPixel();
   transparentColor = new Color(cm.getRGB(transparentPixel), true);
}

e.setTransparent(transparentColor);
于 2012-07-20T06:42:38.137 に答える