PHP Conference Japan 2024

ImagickPixel::getColorValue

(PECL imagick 2, PECL imagick 3)

ImagickPixel::getColorValue获取提供的颜色通道的标准化值

描述

public ImagickPixel::getColorValue(int $color): float

检索指定颜色通道的值,作为介于 0 和 1 之间的浮点数。

参数

color

要获取其值的颜色,指定为 Imagick 颜色常量之一。这可以是 RGB 颜色、CMYK 颜色、alpha 和不透明度,例如 (Imagick::COLOR_BLUE, Imagick::COLOR_MAGENTA)。

返回值

通道的值,作为标准化的浮点数,在发生错误时抛出 ImagickPixelException。

示例

示例 #1 基本 Imagick::getColorValue() 用法

<?php

$color
= new ImagickPixel('rgba(90%, 20%, 20%, 0.75)');

echo
"Alpha 值是 ".$color->getColorValue(Imagick::COLOR_ALPHA).PHP_EOL;
echo
"".PHP_EOL;
echo
"红色值是 ".$color->getColorValue(Imagick::COLOR_RED).PHP_EOL;
echo
"绿色值是 ".$color->getColorValue(Imagick::COLOR_GREEN).PHP_EOL;
echo
"蓝色值是 ".$color->getColorValue(Imagick::COLOR_BLUE).PHP_EOL;
echo
"".PHP_EOL;
echo
"青色值是 ".$color->getColorValue(Imagick::COLOR_CYAN).PHP_EOL;
echo
"品红色值是 ".$color->getColorValue(Imagick::COLOR_MAGENTA).PHP_EOL;
echo
"黄色值是 ".$color->getColorValue(Imagick::COLOR_YELLOW).PHP_EOL;
echo
"黑色值是 ".$color->getColorValue(Imagick::COLOR_BLACK).PHP_EOL;

?>

以上示例将输出

Alpha value is 0.74999618524453

Red value is 0.90000762951095
Green value is 0.2
Blue value is 0.2

Cyan value is 0.90000762951095
Magenta value is 0.2
Yellow value is 0.2
Black value is 0

添加注释

用户贡献的注释 3 条注释

匿名
4 年前
COLOR_ALPHA - 不是完全透明的像素
COLOR_OPACITY - 完全透明的像素
holdoffhunger at gmail dot com
12 年前
使用 getColorValue 获取颜色值时,您可以自由使用任何颜色方案:红色/绿色/蓝色 (RGB) 方案或青色/品红色/黄色/黑色 (CMYK) 方案。对于 RGB,此函数使用“COLOR_RED”、“COLOR_GREEN”和“COLOR_BLUE”的常量值,对于 CMYK,此函数使用“COLOR_CYAN”、“COLOR_MAGENTA”、“COLOR_YELLOW”和“COLOR_BLACK”的常量值。作为程序员,您可能最想知道的问题是“如何知道一个像素的颜色与其他像素不同?”这似乎被定义为 RGB *或* CMYK 值的唯一组合。每组 RGB 值将有一组唯一的 CMYK 值,仅由同一组 RGB 值的其他像素共享,因此 RGB 为 1/0.5/0.5 将有一组唯一的 CMYK 值,仅由具有相同 RGB 值的其他像素共享。

为什么是 CMYK?因为这是印刷的标准,或者引用 Imagick 网站的话,“因此,对于印刷,我们使用四种颜色的墨水:青色、品红色、黄色和黑色;并使用这些墨水定义图像,形成 CMYK 色彩空间。”通过成为“色彩空间”,您可以在定义像素在像素集中唯一时选择使用 RGB 或 CMYK。但是您可以完全自由地选择 RGB 或 CMYK。有关 Imagick 网站的更多信息

https://imagemagick.org.cn/Usage/color_basics/

一些演示两种方法的代码:(对于紫红色像素)

<?php

// 获取像素
// ---------------------------------------------------

$pixel_one = $imagick_type->getImagePixelColor(0,0);

// 获取 Alpha/不透明度值
// ---------------------------------------------------

$pixel_one_color_value_alpha = $pixel_one->getColorValue(imagick::COLOR_ALPHA);
$pixel_one_color_value_opacity = $pixel_one->getColorValue(imagick::COLOR_OPACITY);

// 获取红/绿/蓝 (RGB) 值
// ---------------------------------------------------

$pixel_one_color_value_red = $pixel_one->getColorValue(imagick::COLOR_RED);
$pixel_one_color_value_green = $pixel_one->getColorValue(imagick::COLOR_GREEN);
$pixel_one_color_value_blue = $pixel_one->getColorValue(imagick::COLOR_BLUE);

// 获取青/品红/黄/黑 (CMYK) 值
// ---------------------------------------------------

$pixel_one_color_value_cyan = $pixel_one->getColorValue(imagick::COLOR_CYAN);
$pixel_one_color_value_magenta = $pixel_one->getColorValue(imagick::COLOR_MAGENTA);
$pixel_one_color_value_yellow = $pixel_one->getColorValue(imagick::COLOR_YELLOW);
$pixel_one_color_value_black = $pixel_one->getColorValue(imagick::COLOR_BLACK);

// 打印结果
// ---------------------------------------------------

print("Alpha: $pixel_one_color_value_alpha<br>");
print(
"Opacity: $pixel_one_color_value_opacity<br><br>");

print(
"---------------------------------------------<br><br>");

print(
"Red: $pixel_one_color_value_red<br>");
print(
"Green: $pixel_one_color_value_green<br>");
print(
"Blue: $pixel_one_color_value_blue<br><br>");

print(
"Cyan: $pixel_one_color_value_cyan<br>");
print(
"Magenta: $pixel_one_color_value_magenta<br>");
print(
"Yellow: $pixel_one_color_value_yellow<br>");
print(
"Black: $pixel_one_color_value_black<br><br>");

/*
示例结果 : : :
-----------------------

Alpha: 1
Opacity: 0

---------------------------------------------

Red: 1
Green: 0.501960784314
Blue: 0.501960784314

Cyan: 1
Magenta: 0.501960784314
Yellow: 0.501960784314
Black: 0

*/

?>
mwwaygoo AT hotmail DOT com
14 年前
引用:$color 要检查的通道,指定为 Imagick 通道常量之一。

$color 是 COLOR_* 常量,而不是通道常量

例如
<?php
$image
=new Imagick();
$image->readImage('test.png');
$point=$image->getImagePixelColor(0,0);
echo
' Alpha:'.$point->getColorValue(imagick::COLOR_ALPHA);
echo
' Opacity:'.$point->getColorValue(imagick::COLOR_OPACITY);
echo
' R:'.$point->getColorValue(imagick::COLOR_RED);
echo
' G:'.$point->getColorValue(imagick::COLOR_GREEN);
echo
' B:'.$point->getColorValue(imagick::COLOR_BLUE);
?>
To Top