現在image::magickを用いて透過gifのチェックを以下のようにしています。

if ($obj->Get("type") eq 'PaletteMatte' ) {

}
この場合全てのpixelを確認したとところ、透過箇所がないにもかかわらず、
透過であると判定されることがあります。
gifの処理や仕様に詳しくないためもし理由をご存じの方がいたら教えて下さい。

またその理由を修正する方法がimagemagickやその他ありましたらsampleやurlを教えていただけると助かります。

回答の条件
  • 1人10回まで
  • 登録:
  • 終了:2011/09/17 10:59:49
※ 有料アンケート・ポイント付き質問機能は2023年2月28日に終了しました。

ベストアンサー

id:Mook No.1

回答回数1314ベストアンサー獲得回数393

ポイント300pt

透過GIF かどうかを判定する基準は、Transparent Color Flag がオンになっているかどうかで判定されていると思います。

実際にTransparent Color Index で指定された色が画像内で使用されていなければ、非透過のGIFと見た目は変わりません。

http://www.tohoho-web.com/wwwgif.htm#TransparentGIF


ですから、透過でないようにしたい場合は、保存時に透過・非透過を指定できるようなグラフィックツールを使用すればできると思います。

下記で紹介されている IrfanView は GIF保存時に透過にするかどうかのチェックボックスがあります。

http://www.animegif.net/animegif/pict-makegif.html

20110912073830


見た目が同じなら変更しなくてもよいというのも選択肢の一つだと思いますが、コマンドで一括でやるのであれば、ImageMagic の convert で

 GIF ⇒ GIF

で変換するか、あるいはそれができなければ、一度透過情報を落としてから

 GIF ⇒ BMP ⇒ GIF

のように変換したらできないでしょうか。


http://aoi-f.blog.so-net.ne.jp/2010-09-03

で透過を指定する例がありますが、指定しなければ透過GIFにはならない気がします。

コメントはまだありません

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

回答リクエストを送信したユーザーはいません