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

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

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

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

回答の条件
  • 1人10回まで
  • 13歳以上
  • 登録:2011/09/11 19:52:10
  • 終了:2011/09/17 10:59:49

ベストアンサー

id:Mook No.1

Mook回答回数1312ベストアンサー獲得回数3912011/09/12 07:29:00

ポイント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にはならない気がします。

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

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

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

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

絞り込み :
はてなココの「ともだち」を表示します。
回答リクエストを送信したユーザーはいません