Perl GD 检查像素是不是透明
Posted
技术标签:
【中文标题】Perl GD 检查像素是不是透明【英文标题】:Perl GD Check If Pixel is TransparentPerl GD 检查像素是否透明 【发布时间】:2014-08-04 14:27:00 【问题描述】:我一直在尝试解决这个问题。我必须检查给定的像素(x,y)是否完全透明。
1.如何从给定的像素中提取alpha通道?具有 127 的 alpha 通道意味着像素是透明的吗? 2. 我在一个透明像素上测试了以下代码,它产生了一个非常暗(几乎是黑色)颜色的 RGB 组合。我可以将其用作指标,但我需要更准确的方法。
my $myImage = newFromPng GD::Image($path);
$myImage->saveAlpha(1);
my $index = $myImage->getPixel($x,$y);
my ($red,$green,$blue) = $myImage->rgb($index);
【问题讨论】:
【参考方案1】:我找到了一个似乎可以正常工作的解决方案:
my $index = $myImage->getPixel($x,y);
将返回一个调色板。调色板的范围取决于打开图像的模式。如果是真彩色(24 位 RGB-16,777,216 色),这是人眼可识别的最大颜色数量和实际使用的最大颜色,则最大调色板编号为 16,777,215。当在“透明”像素上调用该函数时,返回的数字超过 20 亿,这对于 24 位 RGB 颜色来说是一个无效数字。所以一个简单的检查:
if ($index >= 1<<24)
#The pixel is transparent
为我做了诀窍。
【讨论】:
以上是关于Perl GD 检查像素是不是透明的主要内容,如果未能解决你的问题,请参考以下文章