如何使用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值的数组.