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
Ја враќа бојата опишана од објектот ImagickPixel, како низа. Ако бојата има поставена алфа канал, ова е обезбедено како четврта вредност во списокот.
Параметри
normalized-
Нормализирајте ги вредностите на бојата. Можни вредности се
0,1or2.Список на можни вредности за normalizednormalized= NULL 0RGB вредностите се враќаат како ints во опсег 0to255(вклучително.) Алфа вредноста се враќа како int и е или0or1.1RGBA вредностите се враќаат како floats во опсег 0to1(вклучително.)2RGBA вредностите се враќаат како ints во опсег 0to255(вклучително.)
Вратени вредности
Низа од вредности на канали. Фрла ImagickPixelException при грешка.
Примери
Пример #1 Основен (PECL imagick 2, PECL imagick 3) 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
)