关于此函数的一些说明……
此函数仅适用于调色板颜色少于或等于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 />-> 调色板索引 = " . $ind;
if ( $ind != -1 )
{
echo "<br />[ 颜色存在! ]";
}
else
{
echo "<br />[ 颜色不存在! ]";
}
imagedestroy ( $pic );
?>