2009-11-16 7 views
9

¿Es posible tomar esta imagen:El uso de un PNG transparente como una máscara de corte

image1 http://i34.tinypic.com/2d8neo0.png

y aplicar esta máscara:

mask http://i35.tinypic.com/2091450.png

y convertirlo en esto:

image2 http://i37.tinypic.com/23m7apv.png

¿Usando GD o Imagick? Sé que es posible enmascarar una imagen usando formas, pero no estoy seguro de cómo hacerlo con una imagen alphatransparent creada previamente. : s

+0

que acabo de hacer un poco de búsqueda y, aparentemente, podría ser capaz de utilizar la biblioteca WIDEimage (http://wideimage.sourceforge.net/) para hacer esto. ¿Pero hay una manera más simple que usar una biblioteca completa solo para esta funcionalidad? – Jedi

+1

Gracias por la edición, Paul. – Jedi

+0

Necesito esto también. – henrijs

Respuesta

1

Creo que está buscando imagealphablending. Lo uso para filigranas, y creo que hará el efecto que está buscando.

+1

No, no creo que lo haga. No estoy fusionando imágenes, estoy usando una imagen para enmascarar una imagen existente. La imagen resultante es alphatransparent. – Jedi

+3

Invierta su máscara. Haga que el centro se trans y los bordes se desvanezcan en blanco. Luego recorte o escale su imagen al tamaño de la máscara. Esto supone un fondo blanco, por supuesto. Si el blanco no funciona, ¿lo está haciendo en blanco y negro? Si es así, toma un color extraño (rosa brillante o verde croma, que pueden funcionar si tienes color también). Haga la imagen de color verdadero y la máscara de ese color, luego configure el color de la paleta como transparente. Entonces, sí, creo que funcionará, solo hay que probarlo desde todos los ángulos. – Cryophallion

12

Usando Imagick y ImageMagick versión> 6 (No sé si funcionará en versiones anteriores):

// Set image path 
$path = '/path/to/your/images/'; 

// Create new objects from png's 
$dude = new Imagick($path . 'dude.png'); 
$mask = new Imagick($path . 'dudemask.png'); 

// IMPORTANT! Must activate the opacity channel 
// See: http://www.php.net/manual/en/function.imagick-setimagematte.php 
$dude->setImageMatte(1); 

// Create composite of two images using DSTIN 
// See: http://www.imagemagick.org/Usage/compose/#dstin 
$dude->compositeImage($mask, Imagick::COMPOSITE_DSTIN, 0, 0); 

// Write image to a file. 
$dude->writeImage($path . 'newimage.png'); 

// And/or output image directly to browser 
header("Content-Type: image/png"); 
echo $dude; 
+0

¡Gracias! ¡Yo estaba buscando esto! Funciona genial. – acme

+0

Probé esto, pasó de un fondo negro a un fondo grisáceo ... –

Cuestiones relacionadas