2024年PHP开发者大会(日本)

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
19年前
<?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 );

?>
To Top