ImageMagickで透過GIFアニメが変です

このQ&Aのポイント
  • PHPで作成したGIFアニメをImageMagickで変換する際、透過にした背景のアニメが正しく表示されず問題が発生しています。
  • フレーム毎に分解して調査したところ、後に表示されるフレームにはそれまでのフレームの画像が全て書き込まれてしまっています。
  • また、背景を透過にした場合は正しくアニメが表示されず、背景透過を止めると正しいアニメになります。解決策を教えてください。
回答を見る
  • ベストアンサー

ImageMagickで透過GIFアニメが変です

PHPでGIFアニメを作成しています。 PHP(元GIF作成)=>ImageMagick(GIFアニメに変換)という流れです。 背景を透過にして動きがあるものを作ってみると、以前のフレームの画像が 全て残ったようなアニメになってしまいます。まるで透明な紙に書いた パラパラマンガというような感じです。 原因追求の為、作成したGIFアニメをフレーム毎に分解してみると、 後に表示されるフレームには、それまでに表示されていたフレームの 画像が全て書き込まれていました。 また元画の背景透過を止めると、正しいアニメになり、作成したGIFアニメ の各フレームも正しい画像になっています。 背景を透過で作成したいのですが、どなたか解決策を教えて下さい。 ちなみに exec("/usr/local/bin/convert -dispose none -delay 20 image*.gif -loop 0 $path/animatedimage.gif", $err); という感じでアニメ化しています。

質問者が選んだベストアンサー

  • ベストアンサー
  • kacchann
  • ベストアンサー率58% (347/594)
回答No.1

「-dispose previous」 かな?

cumati
質問者

お礼

ありがとうございました!上手く出来ました。

関連するQ&A

  • phpからImageMagickの使い方

    phpからexecでImageMagickを使いたいと思っています。ためしにjpgからgifに変換できればと思っています。 exec("/usr/bin/convert IMG_0.jpg a.gif",$output); var_dump($output); という感じでテストしています。 ファイルのパスが間違ってるのかとも思うんですが、うまくいきません。 画像ファイルのパスはexecを実行するphpファイルからの相対パスでよいのでしょうか? -versionは成功しているようです。 exec("/usr/bin/convert -version",$output); array(3) { [0]=> string(68) "Version: ImageMagick 6.4.3 2009-04-10 Q16 http://www.imagemagick.org" [1]=> string(57) "Copyright: Copyright (C) 1999-2008 ImageMagick Studio LLC" [2]=> string(0) "" }

    • ベストアンサー
    • PHP
  • ImageMagickで、非透過PNGの作成

    ImageMagikをバージョンアップして、ImageMagick 6.7.1に変更したら、背景が透過になってしまいました。背景を白にするには、どうしたら良いでしょうか? C:\> convert -density 96 -resize 600 aaa.ps aaa.png 環境:WinXP

  • 透過アニメーションGIFのリサイズ

    下記コマンドでもともと透過されているアニメーションGIFをリサイズした場合、前のフレームの画像が残像のように重なってみえてしまいます。透過を保ったままリサイズする方法ご存知ないでしょうか。 convert -geometry 200x200 -colors 256 file.gif resize.gif

  • GD+imagemagic

    ・php5.2.2 ・gd-2.0.33 ・ImageMagick-6.2.5 上記の環境で作成しているのですが、まずgdの関数imagerotateを使って透過gifを回転させると、 透過部分が黒くなってしまうのですが、これを回避する事は出来るのでしょうか? 例 $img = imagecreatefromgif($img_file); $rotate = imagerotate($img, 90, 0, 0); header('Content-Type: image/gif'); imagegif($rotate); 次に同じ様な問題で、imagemagicのアニメーション機能を使用した場合にも、透過部分が黒くなってしまいます。 例 /usr/local/bin/convert -delay 100 -loop 1 -dispose previous $img_file[1-3].gif anime.gif おわかりになる方が居ましたら、ご指導の程よろしくお願いします。

    • ベストアンサー
    • PHP
  • Imagemagick後のgifアニメーション

    さくらインターネット(マネジドサーバー)にて、PHPのWEBアプリを開発中です。 Imagemagickを使ってgif画像のリサイズをしています。 ところが、アニメーションgifをリサイズするとアニメーションが出来ず最初の一枚だけが表示されます。(リサイズしなければアニメーションします) これはImagemagickが何らかの原因でうまく動作してないのでしょうか? それとも、元々そういうもの(仕様)なのでしょうか? 御存知の方がいらっしゃいましたら、ご教授ください。 お手数ですが、よろしくお願いします。 敬具

    • ベストアンサー
    • PHP
  • 複数のgifアニメをレイヤーで重ねたい

    分かりにくい質問で申し訳ありません。 画像を見て頂けると何がしたいか分かり易いかと思います…。 パラパラ漫画の容量で作ったgifアニメの素材ファイルをいくつか重ね、一枚のアニメとして出力させたいです。 添付のように、ウサギが走るアニメと背景の景色が流れていくアニメ素材を別々に作っておいて、後で動画編集ソフトで重ねる工程を想定しています。 <やったこと> 1コマ1コマ透過させた絵を使ってアニメ素材を作ればいいのかと思ったのですが、透過で出力するとストロボのようになって、最終的に全てのコマが重なった絵になってしまいます。 gifアニメとは1コマずつパカパカと画像を切り替えてくれる物なのだと思っていましたが、セルのように重ねていくだけなんですね…。 gifアニメ素材の出力にはphotoshopCS(に付属しているImagerReader)、photoshopElements6、フリーのVisual G++を試しました。 未透過にして出力すればストロボにはならずに済みますが、アニメ素材同士をレイヤーで重ねることができなくなりますし。 アニメ素材同士を重ねる作業は、Niveなどの動画作成ソフトか、可能ならphotoshopで行おうと思っています。 私がやろうとしていることは使用するソフト次第で可能でしょうか?それともgifアニメでは不可能なのでしょうか…。 ※手間をかけた作業(非透過アニメファイルの背景色だけを透過させたり、セルアニメのように手作業で1コマ1コマウサギと背景を重ねて撮影→それをアニメ出力したり)すれば希望の物を作る事が可能ですが、 どちらも苦手なので、どうにか1コマ1コマの透過を保ちながら、アニメとして出力したいです。

  • 複数のアニメGIFを1つにすると…動かないです

    パソコンに詳しくないので、教えて頂けると助かります。(>_<) 複数の小さいアニメGIF(20×20くらい)を透過した背景の上に貼り付けて、 その小さいアニメGIFだけを動かして保存したい(背景は透過のままで動かない)のですが、 ただ貼って保存しただけでは普通のGIFとして保存されてしまいます。 どうしたら小さいアニメGIFだけを動かすことが出来ますか? ちなみにソフトはImageReadyを使用しています。 説明文が分かりづらくて申し訳ございません。 よろしくお願いいたします。

  • 沢山のGIF画像の透過を解除する方法

    GIF透過された画像が沢山あるのですが、 その画像を全て透けない白背景の画像にする方法はありますか?

  • 透過GIF

    プログラム初心者です 透過GIFをGDでリサイズしたいです やってみたら透明になっているようなんですが、背景との境に輪郭線のような線が出現しました どうやったらきれいに処理できますか? $black = imagecolorallocate($thumb, 0, 0, 0);//透明 $alpha = imagecolortransparent($thumb,$black); // 元画像から透過色を取得する imagefill($thumb, 0, 0, $alpha); // その色でキャンバスを塗りつぶす imagecolortransparent($thumb, $alpha); // 塗りつぶした色を透過色として指定する よろしくお願いします

    • ベストアンサー
    • PHP
  • 背景が透明なGIFアニメを作りたい

    AdobeのImageReady2.0で背景の透明な人が歩くパラパラアニメを作ったのですがPSDファイルのままだと良いのですがGIFやhtmlの形式で保存すると再生したときに 前のフレームの手や足が重なってしまい描いた絵がバレバレのアニメになってしまいます。ちゃんとワンフレームにワンレイヤーだけの表示にしてるのですが。背景ありだと前のフレームの絵が次のフレームの絵で全部隠れるのでだいじょぶなのは理解できるのですが、人の歩く部分だけをアニメにして自分のホームページのテキストや画像の上を歩かせたいので背景の透明なアニメにしたいのです。だからGIF形式で作りたいのですが、、、。何がいけないのでしょうか。教えて下さい。

専門家に質問してみよう