Imagick PHP拡張機能を使用して、画像が透明かどうかを検出できます。PHP imagickで透明度を検出する
私がしてきた幸運は、exec()/その他のコマンドを実行し、ImageMagickコマンドラインツールを使ってこれを実現することです。ここに私の意味は次のとおりです:
exec("identify -verbose example_transparent_image.png | grep \"Alpha\"", $output);
$is_transparent = !empty($output) ? true : false;
ロジックは単純です。問題の画像を徹底的にチェックします。出力にアルファ情報が含まれている場合は、透明性が使用されます。
PHP imagick拡張モジュールがこれをコマンドの1つとして持っているようですが、ドキュメンテーションの不足が私を殺しています。毎回このようなチェックをしなければならないのは馬鹿馬鹿しいようです。
私はこの正確な問題に直面したので、私はidentifyimageとgetimagealphachannelの両方を使いました。 Identimimageは単に十分な情報を提供しませんが、getimagealphachannelはうまく機能します。理論的には、getImageAlphaChannel()はALPHACHANNEL定数を提供していますが、ドキュメントはこの点で率直に言ってゴミです。 JPGの場合は「0」、アルファを含むPNGの場合は「1」、アルファのない場合は32ビットの場合は「0」となります。基本的に、完全に期待される結果。 これは現在の10ヶ月前の質問/回答ですが、2セントで追加する価値があると思いました。 –