ImagickPixel::getColor

(PECL imagick 2, PECL imagick 3)

ImagickPixel::getColorDevuelve el color

Descripción

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

Devuelve el color descrito por el objeto ImagickPixel, en forma de un array. Si el color contiene un canal de opacidad, este será proporcionado como cuarta valor de la lista.

Parámetros

normalized

Normaliza los valores de color. Los valores posibles son 0, 1 o 2.

Lista de valores posibles para normalized
normalized Descripción
0 Los valores RGB son devueltos como ints en el intervalo (inclusivo) 0 a 255. El valor alpha es devuelto como int y es 0 o 1.
1 Los valores RGBA son devueltos como floats en el intervalo (inclusivo) 0 a 1.
2 Los valores RGBA son devueltos como ints en el intervalo (inclusivo) 0 a 255.

Valores devueltos

Un array de los valores de los canales. Genera ImagickPixelException en caso de error.

Ejemplos

Ejemplo #1 Uso simple del método Imagick::getColor()

<?php

// Crea un objeto ImagickPixel con el color predeterminado 'marron'
$color = new ImagickPixel('brown');

// Define el color para tener un canal alpha del 25%
$color->setColorValue(Imagick::COLOR_ALPHA, 64 / 256.0);

$colorInfo = $color->getColor();

echo
"Valores estándar :".PHP_EOL;
print_r($colorInfo);

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

echo
"Valores normalizados :".PHP_EOL;
print_r($colorInfo);

?>

El resultado del ejemplo sería:

Valores estándar :
Array
(
    [r] => 165
    [g] => 42
    [b] => 42
    [a] => 0
)
Valores normalizados :
Array
(
    [r] => 0.64705882352941
    [g] => 0.16470588235294
    [b] => 0.16470588235294
    [a] => 0.25000381475547
)

add a note

User Contributed Notes 1 note

up
3
roman
12 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