ImagickPixel::getColor()
(PECL imagick 2.0.0)
Returns the color
说明
ImagickPixel::getColor([int $normalized= 0]): array
Returns the color described by the ImagickPixel object, as an array. If the color has an opacity channel set, this is provided as a fourth value in the list.
参数
- $normalized
Normalize the color values
返回值
An array of channel values, each normalized if TRUE
is given as param. Throws ImagickPixelException on error.
范例
Example #1 Basic Imagick::getColor() usage
<?php //Create an ImagickPixel with the predefined color 'brown' $color = new ImagickPixel('brown'); //Set the color to have an alpha of 25% $color->setColorValue(Imagick::COLOR_ALPHA, 64 / 256.0); $colorInfo = $color->getColor(); echo "Standard values".PHP_EOL; print_r($colorInfo); $colorInfo = $color->getColor(true); echo "Normalized values:".PHP_EOL; print_r($colorInfo); ?>
以上例程会输出:
Standard values Array ( [r] => 165 [g] => 42 [b] => 42 [a] => 0 ) Normalized values: Array ( [r] => 0.64705882352941 [g] => 0.16470588235294 [b] => 0.16470588235294 [a] => 0.25000381475547 )
In case you use default un-normalized getColor value the alpha value will always be either 0 or 1. If you want to use real full-range 0-1 alpha channel on your 24bit transparent images use the alpha value from the normalized one, even if you use the rest of unnormalized data. To copy a 24bit png with real alpha transparency, you would have to do this: <?php $im=new Imagick( 'image.png' ); $iterator=$im->getPixelIterator(); foreach ($iterator as $row=>$pixels) { foreach ( $pixels as $column => $pixel ){ $un_color=$pixel->getColor(); //unnormalized color $nor_color=$pixel->getColor(true); //normalized color $pixel->setColor('rgba('.$un_color['r'].','.$un_color['g'].','.$un_color['b'].','.$nor_color['a'].')'); } } ?> If you use 'a' (alpha) value from the unnormalized color there will only be binary transparency.