关于此函数的一些说明...
此函数仅适用于调色板为 256 色或更少的图像。您也不能使用 imagetruecolortopalette() 来减少具有 256 色以上调色板的真彩色 PNG 图像的调色板,然后调用此函数。如果您尝试执行此操作,imagecolorexact() 将报告颜色不存在于图像中,而实际上它们存在于图像中!
1. 适用于 8 位/256 色或更少的 png。
2. 适用于所有 gif。
3. 不适用于任何类型的 jpg/jpeg 图像。
(PHP 4、PHP 5、PHP 7、PHP 8)
imagecolorexact — 获取指定颜色的索引
返回图像调色板中指定颜色的索引。
如果从文件创建了图像,则仅解析图像中使用的颜色。仅存在于调色板中的颜色不会被解析。
返回调色板中指定颜色的索引,如果颜色不存在,则返回 -1。
示例 #1 从 GD 徽标获取颜色
<?php
// 设置图像
$im = imagecreatefrompng('./gdlogo.png');
$colors = Array();
$colors[] = imagecolorexact($im, 255, 0, 0);
$colors[] = imagecolorexact($im, 0, 0, 0);
$colors[] = imagecolorexact($im, 255, 255, 255);
$colors[] = imagecolorexact($im, 100, 255, 52);
print_r($colors);
// 从内存中释放
imagedestroy($im);
?>
上面的例子将输出类似以下内容
Array ( [0] => 16711680 [1] => 0 [2] => 16777215 [3] => 6618932 )
关于此函数的一些说明...
此函数仅适用于调色板为 256 色或更少的图像。您也不能使用 imagetruecolortopalette() 来减少具有 256 色以上调色板的真彩色 PNG 图像的调色板,然后调用此函数。如果您尝试执行此操作,imagecolorexact() 将报告颜色不存在于图像中,而实际上它们存在于图像中!
1. 适用于 8 位/256 色或更少的 png。
2. 适用于所有 gif。
3. 不适用于任何类型的 jpg/jpeg 图像。
一个根据 get 变量更改颜色的脚本
需要注意的是:我对 png 和获取真正的红色不太成功
gif 的效果要好得多
<?php
// 0 是黄色,1 是红色,2 是蓝色
$y = 1 - ceil($_GET["c"]/2);
$r = 1 - floor($_GET["c"]/2);
$b = floor($_GET["c"]/2);
$gd = imagecreatefromgif("example.gif");
imagecolorset($gd, imagecolorexact($gd, 255, 0, 0), $r*255, $y*255, $b*255);
imagecolorset($gd, imagecolorexact($gd, 191, 0, 0), $r*191, $y*191, $b*191);
imagecolorset($gd, imagecolorexact($gd, 128, 0, 0), $r*128, $y*128, $b*128);
imagecolorset($gd, imagecolorexact($gd, 255, 0, 0), $r*64, $y*64, $b*64);
header('Content-Type: image/gif');
imagegif($gd);
?>
<?php
$src = "../images/pic.gif";
$red = 9;
$green = 9;
$blue = 4;
$pic0026 = imagecreatefromgif ( $src );
$ind = imagecolorexact ( $pic, $red, $green, $blue );
echo '<img src="../images/pic.gif" border="0" alt="pic" title="View pic" /><br /><br />';
echo "RED ( " . $red . " ) GREEN ( " . $green . " ) BLUE ( " . $blue . " )<br />-> Palette Index = " . $ind;
if ( $ind != -1 )
{
echo "<br />[ The color exists! ]";
}
else
{
echo "<br />[ The color does not exist! ]";
}
imagedestroy ( $pic );
?>