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.ImagickPixel::getColor
Почист и полокален преглед на PHP референцата, со задржана структура од PHP.net и подобра читливост за примери, секции и белешки.
ImagickPixel::getColor
Референца за `imagickpixel.getcolor.php` со подобрена типографија и навигација.
ImagickPixel::getColor
(PECL imagick 2, PECL imagick 3)
ImagickPixel::getColor — Враќа ја бојата
= NULL
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. Possible values are
0,1or2.List of possible values for normalizednormalized= NULL 0The RGB values are returned as ints in the range 0to255(inclusive.) The alpha value is returned as int and is either0or1.1The RGBA values are returned as floats in the range 0to1(inclusive.)2The RGBA values are returned as ints in the range 0to255(inclusive.)
Вратени вредности
An array of channel values. Throws ImagickPixelException on error.
Примери
Пример #1 Основен 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(1);
echo "Normalized values:".PHP_EOL;
print_r($colorInfo);
?>Пример #1 Пример што покажува затворачка ознака што го опфаќа последниот нов ред
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
)