Filigrane d'une image

Soyez le premier à donner votre avis sur cette source.

Snippet vu 19 110 fois - Téléchargée 28 fois

Contenu du snippet

Ce code utilise libGD pour appliquer un logo en filigrane sur une image de type GIF, PNG ou JPEG

Tout est commenté dans le code, Tout est commenté dans le code, les dimensions en paramétres sont respectivement la largueur et la hauteur du cadre d'affichage pour calculer le ratio.

Source / Exemple :


<?

//Cette fonction sert à filigraner les visuels
//Le paramètre img_src est l'image source ici le visuel
//Le second paramètre img_cop est le copyright à superposer
//Les parametres $taillelarg et $taillehaut sont respectivement la largueur et la hauteur d'affichage souhaitée
//c'est parti !!!

function filigrane($img_src,$img_cop,$taillelarg,$taillehaut)
{

//largueur de l'affichage
$taille_larg=$taillelarg;
//hauteur de l'affichage
$taille_haut=$taillehaut;

//récuperation de l'extension
$extension = strrchr($img_src,'.');

switch($extension){
case ".gif":
$image_s=imagecreatefromgif($img_src) or die("Erreur à l'ouverture");break;
case".png":
$image_s=imagecreatefrompng($img_src) or die("Erreur à l'ouverture");break;
case ".jpg"||".jpeg"||".jpe":
$image_s=imagecreatefromjpeg($img_src) or die("Erreur à l'ouverture");break;
}

//récuperation des dimensions de l'image principale
$width=imagesx($image_s);
$height=imagesy($image_s);

//redimention de l'image source
if($width>=$height) //visuel horizontal
{
$ratio=max($width/$taille_larg, $height/$taille_haut);
$new_width=$taille_larg; 
$new_height=$height/$ratio;
}
else //visuel vertical
{
$ratio=max($width/$taille_larg, $height/$taille_haut);
$new_width=$width/$ratio; 
$new_height=$taille_haut;
}

//création de l'image source redimentionnée
$thumb=imagecreatetruecolor($new_width,$new_height);
imagecopyresized($thumb,$image_s,0,0,0,0,$new_width,$new_height,$width,$height);

//dimensions de l'image principale redimentionnée
$width_thumb=imagesx($thumb);
$height_thumb=imagesy($thumb);

//création de l'image copyright
$image_c=imagecreatefrompng($img_cop);

//récuperation des dimensions de l'image du copyright
$larg_cop=imagesx($image_c);
$long_cop=imagesy($image_c);

//calcul la position du copyright sur l'axe des abscisses 
$x=($width_thumb-$larg_cop)/2;

//calcul la position du copyright sur l'axe des ordonnées 
$y=($height_thumb-$long_cop)/2;

//réalisation de la superposition
imagecopymerge($thumb,$image_c, $x, $y, 0, 0, $larg_cop, $long_cop, 60);

//sauvegarde de l'image
switch($extension){
case ".gif":
imagegif($thumb,"./"."fili-".$img_src) or die ("Erreur de création");
break;
case".png":
imagepng($thumb,"./"."fili-".$img_src) or die ("Erreur de création");
break;
case ".jpg"||".jpeg"||".jpe":
imagejpeg($thumb,"./"."fili-".$img_src) or die ("Erreur de création");
break;
}

//libération de la mémoire
imagedestroy($image_s);
}

//appel de la fonction
filigrane('F14.jpg','./ub/logoub.png',800,600);

?>

Conclusion :


Ce code est complétement libre modifiez-le comme bon vous semble.

A voir également

Ajouter un commentaire Commentaires
trytobegood
Messages postés
1
Date d'inscription
mardi 28 novembre 2006
Statut
Membre
Dernière intervention
9 janvier 2008

9 janv. 2008 à 17:41
Merci beaucoup c'est exactement ce que je cherchai.

J'ajouterai que l'image copyright peut être aussi un gif

il faut juste modifier comme ci-dessous.
si png comme dans l'exemple
//création de l'image copyright png
$image_c=imagecreatefrompng($img_cop);

si gif comme dans l'exemple
//création de l'image copyright gif
$image_c=imagecreatefromgif($img_cop);
dunker94_23
Messages postés
2
Date d'inscription
mardi 11 juillet 2006
Statut
Membre
Dernière intervention
11 juillet 2006

11 juil. 2006 à 23:00
De plus, c'est sur cette page que je voulais ajouter les filigranes avec mon logo...

Logo: http://stan113.free.fr/2/images/logo.gif

Page: http://stan113.free.fr/2/ch_3.php3

Merci d'avance pour votre Aide
dunker94_23
Messages postés
2
Date d'inscription
mardi 11 juillet 2006
Statut
Membre
Dernière intervention
11 juillet 2006

11 juil. 2006 à 22:58
Bonjour, je suis débutant en flash, pourtant il me semble tout avoir fait correctement,

qund je charge la page:

http://stan113.free.fr/2/ch_3.test.php

il apparait:


Warning: imagecreatefrompng(./images/log.gif) [function.imagecreatefrompng]: failed to open stream: No such file or directory in /mnt/110/sdc/f/3/stan113/2/ch_3.test.php on line 56

Warning: imagesx(): supplied argument is not a valid Image resource in /mnt/110/sdc/f/3/stan113/2/ch_3.test.php on line 59

Warning: imagesy(): supplied argument is not a valid Image resource in /mnt/110/sdc/f/3/stan113/2/ch_3.test.php on line 60

Warning: imagecopymerge(): supplied argument is not a valid Image resource in /mnt/110/sdc/f/3/stan113/2/ch_3.test.php on line 69

Warning: imagegif() [function.imagegif]: Unable to open './fili-./images/logo.gif' for writing in /mnt/110/sdc/f/3/stan113/2/ch_3.test.php on line 74
Erreur de création

Et pourtant voici le code:


<?

//Cette fonction sert à filigraner les visuels
//Le paramètre img_src est l'image source ici le visuel
//Le second paramètre img_cop est le copyright à superposer
//Les parametres $taillelarg et $taillehaut sont respectivement la largueur et la hauteur d'affichage souhaitée
//c'est parti !!!

function filigrane($img_src,$img_cop,$taillelarg,$taillehaut)
{

//largueur de l'affichage
$taille_larg=$taillelarg;
//hauteur de l'affichage
$taille_haut=$taillehaut;

//récuperation de l'extension
$extension = strrchr($img_src,'.');

switch($extension){
case ".gif":
$image_s=imagecreatefromgif($img_src) or die("Erreur à l'ouverture");break;
case".png":
$image_s=imagecreatefrompng($img_src) or die("Erreur à l'ouverture");break;
case ".jpg"||".jpeg"||".jpe":
$image_s=imagecreatefromjpeg($img_src) or die("Erreur à l'ouverture");break;
}

//récuperation des dimensions de l'image principale
$width=imagesx($image_s);
$height=imagesy($image_s);

//redimention de l'image source
if($width>=$height) //visuel horizontal
{
$ratio=max($width/$taille_larg, $height/$taille_haut);
$new_width=$taille_larg;
$new_height=$height/$ratio;
}
else //visuel vertical
{
$ratio=max($width/$taille_larg, $height/$taille_haut);
$new_width=$width/$ratio;
$new_height=$taille_haut;
}

//création de l'image source redimentionnée
$thumb=imagecreatetruecolor($new_width,$new_height);
imagecopyresized($thumb,$image_s,0,0,0,0,$new_width,$new_height,$width,$height);

//dimensions de l'image principale redimentionnée
$width_thumb=imagesx($thumb);
$height_thumb=imagesy($thumb);

//création de l'image copyright
$image_c=imagecreatefrompng($img_cop);

//récuperation des dimensions de l'image du copyright
$larg_cop=imagesx($image_c);
$long_cop=imagesy($image_c);

//calcul la position du copyright sur l'axe des abscisses
$x=($width_thumb-$larg_cop)/2;

//calcul la position du copyright sur l'axe des ordonnées
$y=($height_thumb-$long_cop)/2;

//réalisation de la superposition
imagecopymerge($thumb,$image_c, $x, $y, 0, 0, $larg_cop, $long_cop, 60);

//sauvegarde de l'image
switch($extension){
case ".gif":
imagegif($thumb,"./"."fili-".$img_src) or die ("Erreur de création");
break;
case".png":
imagepng($thumb,"./"."fili-".$img_src) or die ("Erreur de création");
break;
case ".jpg"||".jpeg"||".jpe":
imagejpeg($thumb,"./"."fili-".$img_src) or die ("Erreur de création");
break;
}

//libération de la mémoire
imagedestroy($image_s);
}

//appel de la fonction
filigrane('F14.jpg','./ub/log.gif',800,600);

?>
<meta name="generator" content="Namo WebEditor v5.0">
pajanac
Messages postés
2
Date d'inscription
jeudi 12 février 2004
Statut
Membre
Dernière intervention
2 mars 2009

10 avril 2006 à 08:35
bonjour a tous
Ce script m'interesse beaucoup pour posé un copyricht sur des image d'un site de vente.Comment l'utilise t'on pour eviter le redimensionnement et que celà soit automatique au chargement de l'image ?
merci
cs_GRenard
Messages postés
1662
Date d'inscription
lundi 16 septembre 2002
Statut
Membre
Dernière intervention
30 juillet 2008
1
7 avril 2006 à 15:05
L'image copyright est absolument un png ? ah bon...
<?php au lieu de <?
Pourquoi "./"."fili-" et pourquoi pas "./fili-" ?

Ta fonction sert à filigraner... pourquoi avoir inclu un moyen de resize aussi ? il faudrait mettre une fonction différente pour chaque.
Afficher les 7 commentaires

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.