CakeFest 2024: The Official CakePHP Conference

ImagickPixel::getColor

(PECL imagick 2, PECL imagick 3)

ImagickPixel::getColorRetourne la couleur

Description

public ImagickPixel::getColor(int $normalized = 0): array

Retourne la couleur décrite par l'objet ImagickPixel, sous la forme d'un tableau. Si la couleur contient un canal d'opacité, il sera fourni comme quatrième valeur de la liste.

Liste de paramètres

normalized

Normalise les valeurs de couleurs. Les valeurs possible sont 0, 1 ou 2.

Liste des valeurs possible pour normalized
normalized Description
0 Les valeurs RGB sont retournées en tant que ints dans l'intervalle (inclusive) 0 à 255. La valeur alpha est retournée en tant que int et est soit 0 ou 1.
1 Les valeurs RGBA sont retournées en tant que floats dans l'intervalle (inclusive) 0 à 1.
2 Les valeurs RGBA sont retournées en tant que ints dans l'intervalle (inclusive) 0 à 255.

Valeurs de retour

Un tableau des valeurs des canaux. Lance ImagickPixelException en cas d'erreur.

Exemples

Exemple #1 Utilisation simple de la méthode Imagick::getColor()

<?php

// Crée un objet ImagickPixel avec comme couleur prédéfinie 'marron'
$color = new ImagickPixel('brown');

// Défini la couleur pour avoir un canal alpha de 25%
$color->setColorValue(Imagick::COLOR_ALPHA, 64 / 256.0);

$colorInfo = $color->getColor();

echo
"Valeurs standards :".PHP_EOL;
print_r($colorInfo);

$colorInfo = $color->getColor(1);

echo
"Valeurs normalisées :".PHP_EOL;
print_r($colorInfo);

?>

L'exemple ci-dessus va afficher :

Valeurs standards :
Array
(
    [r] => 165
    [g] => 42
    [b] => 42
    [a] => 0
)
Valeurs normalisées :
Array
(
    [r] => 0.64705882352941
    [g] => 0.16470588235294
    [b] => 0.16470588235294
    [a] => 0.25000381475547
)

add a note

User Contributed Notes 1 note

up
3
roman
10 years ago
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.
To Top