php – 如何使用GD检查图像是否具有透明度?

如何使用php的GD库检查图像是否具有透明像素?

解决方法:

看起来您不能一目了然地检测透明度.

The comments on the imagecolorat manual page表明使用真彩色图像时得到的整数实际上可以总共移位四次,第四个是alpha通道(其他三个是红色,绿色和蓝色).因此,给定$x和$y处的任何像素位置,您可以使用以下方法检测alpha:

$rgba = imagecolorat($im,$x,$y);
$alpha = ($rgba & 0x7F000000) >> 24;
$red = ($rgba & 0xFF0000) >> 16;
$green = ($rgba & 0x00FF00) >> 8;
$blue = ($rgba & 0x0000FF);

127的$alpha显然是完全透明的,而零是完全不透明的.

不幸的是,您可能需要处理图像中的每个像素,只是为了找到一个透明的像素,然后这只适用于真彩色图像.否则imagecolorat会返回一个颜色索引,然后必须使用imagecolorsforindex查找颜色索引,这实际上会返回一个带有alpha值的数组.

上一篇:从PHP / GD中的资源获取图像mimetype?


下一篇:当图像存储为字节数组时,PHP获取图像大小