PHP imagick检测透明度

Sco*_*ott 10 php transparency identifier imagick

我希望能够使用Imagick PHP扩展来检测图像是否透明.

到目前为止,我唯一的运气是运行exec()/其他命令,并使用ImageMagick命令行工具来实现这一点.这就是我的意思:

exec("identify -verbose example_transparent_image.png | grep \"Alpha\"", $output);
$is_transparent = !empty($output) ? true : false;
Run Code Online (Sandbox Code Playgroud)

逻辑很简单.对相关图像进行详细检查:如果输出包含任何alpha信息,则表示它使用透明度.

似乎PHP imagick扩展应该将它作为其命令之一,但缺少文档正在扼杀我.每次都要进行这种检查似乎很愚蠢.

小智 10

啊,解决了(我想).Imagick有一个函数getImageAlphaChannel(),如果它包含任何alpha信息则返回true,否则返回false.

确保您拥有ImageMagick 6.4.0或更高版本.

http://www.php.net/manual/en/function.imagick-getimagealphachannel.php

  • 我自己碰到了这个确切的问题,然后通过了identifyimage和getimagealphachannel。Identifyimage不能提供足够的信息,而getimagealphachannel可以正常工作。从理论上讲,getImageAlphaChannel()提供了一个ALPHACHANNEL常量,但是坦率地说,在这方面文档是垃圾。对于JPG,我得到一个“ 0”,对于具有alpha的PNG,得到一个“ 1”,对于没有alpha的32位,它得到一个“ 0”。基本上,完全可以预期的结果。因此,即使这是目前进行了10个月的“问题/答案”,我仍认为值得增加2美分。 (3认同)