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 :




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'); ?>