imagecolorexact

(PHP 4、PHP 5、PHP 7、PHP 8)

imagecolorexact获取指定颜色的索引

描述

imagecolorexact(
    GdImage $image,
    int $red,
    int $green,
    int $blue
): int

返回图像调色板中指定颜色的索引。

如果从文件创建了图像,则仅解析图像中使用的颜色。仅存在于调色板中的颜色不会被解析。

参数

image

一个 GdImage 对象,由图像创建函数之一返回,例如 imagecreatetruecolor()

red

红色分量的值。

green

绿色分量的值。

blue

蓝色分量的值。

返回值

返回调色板中指定颜色的索引,如果颜色不存在,则返回 -1。

变更日志

版本 描述
8.0.0 image 现在需要一个 GdImage 实例;以前,需要一个有效的 gd resource

示例

示例 #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
)

参见

添加笔记

用户贡献的笔记 3 个笔记

jbr at ya-right dot com
18 年前
关于此函数的一些说明...

此函数仅适用于调色板为 256 色或更少的图像。您也不能使用 imagetruecolortopalette() 来减少具有 256 色以上调色板的真彩色 PNG 图像的调色板,然后调用此函数。如果您尝试执行此操作,imagecolorexact() 将报告颜色不存在于图像中,而实际上它们存在于图像中!

1. 适用于 8 位/256 色或更少的 png。
2. 适用于所有 gif。
3. 不适用于任何类型的 jpg/jpeg 图像。
samtobia at geemail dot com
13 年前
一个根据 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);

?>
info at educar dot pro dot br
18 年前
<?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 );

?>
To Top