imagecolorexact()
(PHP 4, PHP 5, PHP 7)
取得指定颜色的索引值
说明
imagecolorexact(resource $image,int $red,int $green,int $blue): int
返回图像调色板中指定颜色的索引值。
如果颜色不在图像的调色板中,返回-1。
如果从文件创建了图像,只有图像中使用了的颜色会被辨析。仅出现在调色板中的颜色不会被辨析。
参见imagecolorclosest()。
A few notes about this function... This function will only work on images where the palette is 256 colors or less. You also can not use imagetruecolortopalette() to reduce the palette on a true color PNG image that has greater than 256 colors in it's palette, then call this function. If you try to do this imagecolorexact() will report colors not being in the image when they are in the image! 1. works on png(s) 8bit/256 colors or less. 2. works on all gif(s) 3. does not work on any type of jpg/jpeg image.
A script that changes colors depending on get variable important to note: I had little success with pngs and getting true red gifs work much better <?php //0 is yellow, 1 is red, 2 is blue $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 ); ?>