'imagecolorat'和透明度

时间:2011-04-18 12:34:45

标签: php image transparency pixel

如何在图片上获取像素的透明度值?

'imagecolorat'仅选取图像中指定位置的像素颜色的索引。使用该索引,我可以获得RGB值,但不能获得透明值。

希望你理解,并提前感谢你。

3 个答案:

答案 0 :(得分:12)

解决方案可能如下:

$colorIndex = imagecolorat($img, $x, $y);
$colorInfo = imagecolorsforindex($img, $colorIndex);
print_r($colorInfo);

将打印如下内容:

Array
(
   [red] => 226
   [green] => 222
   [blue] => 252
   [alpha] => 0
)

其中[alpha]是你的透明度值...(从0到127,其中0是完全不透明的,127是完全透明的)

享受!

答案 1 :(得分:10)

据我所知,透明度值由函数imagecolorat返回。你能尝试一下:

$color        = imagecolorat($image, $x, $y);
$transparency = ($color >> 24) & 0x7F;

透明度是0到127之间的整数,因此我们需要屏蔽32位颜色整数的前8位。

答案 2 :(得分:1)

根据PHP手册imagecolorat返回指定X / Y坐标处的颜色索引(我假设这是用于GIF和/或PNG-8)。

如果您知道索引,则问题是确定文件中的哪个索引是透明索引。

imagecolortransparent可能值得一看,imagecolorsforindex也可能有所帮助。