Masque de transparence en PHP

Voici une fonction vous permettant d'appliquer un masque de transparences sur vos images en php.
Cette manipulation peux vous permettre ensuite d'afficher vos images sur votre site.

Notez que le système est lourd car il "scan" tous les pixels du calque et de l'images.
Vous pouvez tester le système avec vos images à cette adresse.

Concernant la création des masques il vous faudra un logiciel capable d'utiliser la transparence. (Dehors paint !)
La fonction conserve les zones transparences et rend transparent les zones opaques blanches.

Voici les masques utilisés sur mon espace de développement :

http://devs.maraumax.fr/php-mask/images/masques/masque-1-min.jpghttp://devs.maraumax.fr/php-mask/images/masques/masque-2-min.jpghttp://devs.maraumax.fr/php-mask/images/masques/masque-3-min.jpghttp://devs.maraumax.fr/php-mask/images/masques/masque-4-min.jpghttp://devs.maraumax.fr/php-mask/images/masques/masque-5-min.jpg



Et voici la fonction en question :

<?php
 
/*
	Applique un masque de transparence à une image
	$image -> image source (Format PNG)
	$masque -> masque à appliquer (Format PNG)
*/
function mask_transparency($image, $masque)
{
	// Récupération des dimenssions de l'image
	list($image_w, $image_h) = getimagesize($image);
 
	// Création de image
	$iimage = imagecreatefrompng($image);
 
	// Désactivation mode blending et sauvegarde infos canal alpha
	imagealphablending($iimage, false);
	imagesavealpha($iimage, true);
 
	// Création du masque
	$imasque = imagecreatefrompng($masque);
 
	for ($x=0; $x<=$image_w; ++$x)
	{
		for ($y=0; $y<=$image_h; ++$y)
		{
			// Récupérations infos pixel du masque
			$pxl_masque = imagecolorsforindex($imasque, imagecolorat($imasque, $x, $y));
			// Récupérations infos pixel de l'image
			$pxl_image = imagecolorsforindex($iimage, imagecolorat($iimage, $x, $y));
			// Nouvelles informations
			$color = imagecolorallocatealpha($iimage, $pxl_image['red'], $pxl_image['green'], $pxl_image['blue'], (127-$pxl_masque['alpha']));
			// On applique la modification
			imagesetpixel($iimage, $x, $y, $color);
		}
	}
 
	// On sauvegarde l'image
	imagepng($iimage, $image);
}

Exemple d'utilisation :

<?php
 
// Application du masque de "masques/mon_masque.png" sur l'image "images/mon_images.png"
mask_transparency('images/mon_image.png', 'masques/mon_masque.png');
 
?>

Ajouter un commentaire