2011-04-18 17 views
6

¿Cómo es posible obtener transparencia valor de un píxel en una imagen ?'imagecolorat' y transparencia

'imagecolorat' selecciona solo el índice del color del píxel en la ubicación especificada en la imagen. Con ese índice puedo obtener los valores RGB pero no los transparentes.

Espero que lo entiendas, y gracias de antemano.

Respuesta

6

Hasta donde yo sé, el valor de transparencia es devuelto por la función imagecolorat. Podría intentar:

$color  = imagecolorat($image, $x, $y); 
$transparency = ($color >> 24) & 0x7F; 

La transparencia es un número entero entre 0 y 127 por lo que necesitamos para enmascarar los primeros 8 bits del entero de 32 bits de color.

+0

¡Oh, gracias! No sabía que el imagecolorat, de hecho, contiene el valor alfa. – Roman

10

la solución podría ser la siguiente:

$colorIndex = imagecolorat($img, $x, $y); 
$colorInfo = imagecolorsforindex($img, $colorIndex); 
print_r($colorInfo); 

que imprimirá algo como:

Array 
(
    [red] => 226 
    [green] => 222 
    [blue] => 252 
    [alpha] => 0 
) 

donde [alfa] es su valor de transparencia ... (de 0 a 127, donde 0 es totalmente opaco y 127 es totalmente transparente)

¡Disfrútalo!

+0

Sí, estoy de acuerdo. Gracias por responder. – Roman

+0

hmmm pensé que el valor alfa es de 0 a 255, 0 significa transparente y 255 significa no transparente – user889030

1

De acuerdo con el manual de PHP imagecolorat devuelve el índice del color en las coordenadas X/Y especificadas (supongo que esto es para GIF y/o PNG-8).

Si conoce el índice, entonces el problema es determinar qué índice en el archivo es el transparente.

imagencolortransparent puede valer la pena mirar, imagecolorsforindex también puede ser útil.