Watermark/Tampon/protection d'image proportionnel et centré

Contenu du snippet

Salut à tous, et à toutes :) ! Voilà j'ai galèré un bon bout de temps (et là c'est un euphémisme...) pour avoir enfin un petit script magique (ci-dessous) qui redimentionne propotionellement un "tampon" et qui l'applique à une image demandée par methode GET dans l'url.
En effet, je n'ai ni trouvé de scripts préfaits répondant ni plus, ni moins au problème posé, et personne sur aucun forum n'a su m'aider; Comme quoi, parfois on est jamais mieux servit que par sois-même! :p

On notera aussi que, pour des raisons techniques et de simplicité, on redimentionne les côtés x et y du "tampon", à la même taille; Si votre tampon est rectangulaire, il vous suffit juste, dans votre éditeur d'images, de créer un carré transparent et ajoutez-y votre tampon.
(plus clairement, en image : <undefined>http://puu.sh/8s7ah.png</undefined> )

Soit otre page "w.php", et le dossier contenant les images à protèger "img":
<?php

if(empty($_GET['i'])){
//affiche une image d'erreur si get est vide


$im = imagecreatefrompng("scr/m/e.png");

//transparence de l'image
imagealphablending( $im, false );
imagesavealpha( $im, true );

// Affichage de l'image et liberation de la mémoire
header('Content-Type: image/png');
imagepng($im);
imagedestroy($im);

}elseif(!file_exists('img/'.$_GET['i'])){
//affiche une image d'erreur si le fichier n'existe pas dans le dossier img


$im = imagecreatefrompng("scr/m/e.png");

//transparence de l'image
imagealphablending( $im, false );
imagesavealpha( $im, true );

// Affichage de l'image et liberation de la mémoire
header('Content-Type: image/png');
imagepng($im);
imagedestroy($im);
}else{

// Ouverture des images du tampon et de celle à protèger et récupèration du get
$stamp = imagecreatefrompng('scr/m/w.png');
$get = $_GET['i'];
$im = imagecreatefromjpeg('img/'.$get);
 
// Obtention des meusures nécéssaires des images
$sx = imagesx($stamp);
$sy = imagesy($stamp);
$sximg = imagesx($im);
 
//Pourcentage de la taille du tampon par rapport à l'image (15%)
$percent = $sximg * 0.15;
 
//positions au centre du tampon
$posx = round(imagesx($im) / 2) - round($percent / 2);
$posy = round(imagesy($im) / 2) - round($percent / 2);
 
//Création du tampon final redimentionné
$dest_image = imagecreatetruecolor($percent, $percent);

//transparence de l'image
imagealphablending( $dest_image, false );
imagesavealpha( $dest_image, true );
imagecopyresampled($dest_image, $stamp, 0, 0, 0, 0, $percent, $percent, $sx, $sy);
 
// Copie du tampon redimentionné sur l'image 
 
imagecopy($im, $dest_image, round($posx), round($posy), 0, 0, $percent, $percent);
 
// Affichage de l'image et liberation de la mémoire

header('Content-type: image/jpg');
imagepng($im);
imagedestroy($im);
}
?>


Notez que le tampon est en png et l'image protègée en jpg.

Maintenant, il ne vous reste plus qu'à protèger votre dossier img avec un htaccess et vos images seront protègées du vol! :)

Si vous voulez faire apparaitre votre image protègée dans une page html, la methode à suvre ne sera plus:
-
<img src="img/image.jpg">

MAIS
-
<img src="w.php?i=img/image.jpg">


Voilà voilà! :) Si vous avez des questions ou des remarques, n'hésitez pas!

A voir également

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.