COLOR_ALPHA - 非完全透明像素
COLOR_OPACITY - 完全透明像素
(PECL imagick 2, PECL imagick 3)
ImagickPixel::getColorValue — 获取提供的颜色通道的归一化值
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
使用 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 网站的更多信息
http://www.imagemagick.org/Usage/color_basics/
一些演示两种方法的代码:(对于紫红色像素)
<?php
// 获取像素
// ---------------------------------------------------
$pixel_one = $imagick_type->getImagePixelColor(0,0);
// 获取 Alpha/Opacity 值
// ---------------------------------------------------
$pixel_one_color_value_alpha = $pixel_one->getColorValue(imagick::COLOR_ALPHA);
$pixel_one_color_value_opacity = $pixel_one->getColorValue(imagick::COLOR_OPACITY);
// 获取 Red/Green/Blue (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);
// 获取 Cyna/Magenta/Yellow/blacK (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
*/
?>
QUOTE: $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);
?>