Précédent   Forum des professionnels en informatique > PHP > Bibliothèques et frameworks > Images > GD
GD Forum d'entraide pour l'extension GD permettant de manipuler des images en PHP. Avant de poster -> tutoriels GD
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 08/03/2007, 10h40   #1
Membre éclairé
 
Avatar de Space Cowboy
 
Inscription : avril 2005
Messages : 495
Détails du profil
Informations forums :
Inscription : avril 2005
Messages : 495
Points : 306
Points : 306
Par défaut Mettre un WaterMark automatique

Bonjour,

J'aimerais mettre un watermark sur les images que j'upload, donc j'ai cherche un exemple pour ensuite en faire un moi même.

Après une recherche de 2 sec sous Google, j'ai trouvé ca :

Citation:
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
<?php
 
// Chemin et nom de fichier du fichier PNG à insérer dans l'image
// Pour ne pas utiliser d'image, commentez la ligne suivante
 
// Define('WATERMARK_IMAGE', './test.png');
 
// Intensité de transition en pourcentage
Define('WATERMARK_PERCENT', '60');
 
// Texte copyright à insérer dans l'image
// Pour ne pas utiliser de texte, commentez la ligne suivante
 
Define('WATERMARK_TEXT', 'Copyright (c) 2006 www.visualprod.net');
 
// Taille de la police de caractère ( 1 / 2 / 3 / 4 / 5 )
Define('WATERMARK_TEXT_FONT', '3');
 
// Le texte en mode Shadow (1 = oui - 2 = non)
Define('TEXT_SHADOW', '1');
 
// Couleur du texte
Define('TEXT_COLOR', '#FFFFFF');
 
 
// PARAMETRES GENERAUX
Define('WATERMARK_ALIGN_H', 'right'); // left / right / center
Define('WATERMARK_ALIGN_V', 'bottom'); // top / bottom / center
Define('WATERMARK_MARGIN', '10');
 
// --------------------------------------------------
 
$dr=preg_replace('/WaterMark\.php.+/', '', $_SERVER['PHP_SELF']);
$filename=str_replace($dr, './', $_SERVER['PATH_INFO']);
$lst=GetImageSize($filename);
$image_width=$lst[0];
$image_height=$lst[1];
$image_format=$lst[2];
 
if ($image_format==1) {
   Header("Content-Type:image/gif");
   readfile($filename);
   exit;
} elseif ($image_format==2) {
   $old_image=imagecreatefromjpeg($filename);
} elseif ($image_format==3) {
   $old_image=imagecreatefrompng($filename);
} else {
   readfile($filename);
   exit;
}
 
 
if (Defined('WATERMARK_TEXT') && WATERMARK_TEXT!='') {
 
   $color = eregi_replace("#","", TEXT_COLOR);
   $red = hexdec(substr($color,0,2));
   $green = hexdec(substr($color,2,2));
   $blue = hexdec(substr($color,4,2));
 
   $text_color = imagecolorallocate ($old_image, $red, $green, $blue);
 
   $text_height=imagefontheight(WATERMARK_TEXT_FONT);
 
   $text_width=strlen(WATERMARK_TEXT)*imagefontwidth(WATERMARK_TEXT_FONT);
   $wt_y=WATERMARK_MARGIN;
   if (WATERMARK_ALIGN_V=='top') {
      $wt_y=WATERMARK_MARGIN;
   } elseif (WATERMARK_ALIGN_V=='bottom') {
 
      $wt_y=$image_height-$text_height-WATERMARK_MARGIN;
   } elseif (WATERMARK_ALIGN_V=='center') {
      $wt_y=(int)($image_height/2-$text_height/2);
   }
 
   $wt_x=WATERMARK_MARGIN;
   if (WATERMARK_ALIGN_H=='left') {
      $wt_x=WATERMARK_MARGIN;
   } elseif (WATERMARK_ALIGN_H=='right') {
      $wt_x=$image_width-$text_width-WATERMARK_MARGIN;
   } elseif (WATERMARK_ALIGN_H=='center') {
      $wt_x=(int)($image_width/2-$text_width/2);
   }
 
   if (TEXT_SHADOW=='1') {
      imagestring($old_image, WATERMARK_TEXT_FONT, $wt_x+1, $wt_y+1, WATERMARK_TEXT, 0);
   }
   imagestring($old_image, WATERMARK_TEXT_FONT, $wt_x, $wt_y, WATERMARK_TEXT, $text_color);
}
 
if (Defined('WATERMARK_IMAGE') && WATERMARK_IMAGE!='' && file_exists(WATERMARK_IMAGE)) {
 
   $lst2=GetImageSize(WATERMARK_IMAGE);
   $image2_width=$lst2[0];
   $image2_height=$lst2[1];
   $image2_format=$lst2[2];
 
   if ($image2_format==2) {
      $wt_image=imagecreatefromjpeg(WATERMARK_IMAGE);
   } elseif ($image2_format==3) {
      $wt_image=imagecreatefrompng(WATERMARK_IMAGE);
   }
 
   if ($wt_image) {
 
      $wt_y=WATERMARK_MARGIN;
      if (WATERMARK_ALIGN_V=='top') {
         $wt_y=WATERMARK_MARGIN;
      } elseif (WATERMARK_ALIGN_V=='bottom') {
         $wt_y=$image_height-$image2_height-WATERMARK_MARGIN;
      } elseif (WATERMARK_ALIGN_V=='center') {
         $wt_y=(int)($image_height/2-$image2_height/2);
      }
 
      $wt_x=WATERMARK_MARGIN;
      if (WATERMARK_ALIGN_H=='left') {
         $wt_x=WATERMARK_MARGIN;
      } elseif (WATERMARK_ALIGN_H=='right') {
         $wt_x=$image_width-$image2_width-WATERMARK_MARGIN;
      } elseif (WATERMARK_ALIGN_H=='center') {
         $wt_x=(int)($image_width/2-$image2_width/2);
      }
 
imagecopymerge($old_image,$wt_image,$wt_x,$wt_y,0,0,$image2_width,$image2_height,WATERMARK_PERCENT);
   }
}
 
if ($image_format==2) {
   imageJpeg($old_image);
}
if ($image_format==3) {
   imagePng($old_image);
}
 
?>
Il suffirait de mettre un .php et un .htaccess dans un répertoire pour apliqué à watermark à toute les images affiché par les clients. Les images ne sont pas modifier physiquement, mais seulement celle envoyé au visiteur.

J'ai essayé mais ca ne foncitonne pas.
Apparament il suffit de mettre un .php et un .htaccess dans le répertoire, et de modifier le .htaccess avec le chemin relatif du dossier.
Par exemple :

Code :
1
2
addhandler wtmrk jpg
action wtmrk /site/galerie/image/album/WaterMark.php
Chez moi ca ne fontionne pas, j'ai le code de l'image qui s'affiche, pas l'image.

Quelqu'un pourrait le tester et savoir si il fonctionne ?
Space Cowboy est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 08/03/2007, 20h42   #2
Membre Expert
 
Inscription : janvier 2007
Messages : 1 452
Détails du profil
Informations personnelles :
Âge : 27
Localisation : France, Paris (Île de France)

Informations forums :
Inscription : janvier 2007
Messages : 1 452
Points : 1 914
Points : 1 914
Tu as pensé à modifier les entêtes HHTP pour indiquer au navigateurs qu'il s'agissait de fichier du type gif/jpg, png ect ?
kaymak est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 20/03/2007, 10h36   #3
Membre éclairé
 
Avatar de Space Cowboy
 
Inscription : avril 2005
Messages : 495
Détails du profil
Informations forums :
Inscription : avril 2005
Messages : 495
Points : 306
Points : 306
Ce n'est pas moi qui est fait le code.

Quand je fait ca en local avec easyphp 1.8, j'ai une arboresence du type :
www
  • bdd
  • bdd1

dans le fichier .htaccess je devrais mettre :
Code :
1
2
addhandler wtmrk jpg
action wtmrk bdd/image/article/apparence/WaterMark.php
Mais malheureusement ...



J'ai essayé :
action wtmrk D:\Program Files\EasyPHP1-8\www\bdd\image\article\apparence\WaterMark.php
action wtmrk bdd/image/article/apparence/WaterMark.php
action wtmrk /bdd/image/article/apparence/WaterMark.php
action wtmrk WaterMark.php
action wtmrk /WaterMark.php

J'ai bien php 4 et GD2 activé... sur le serveur de free c'est la même chose ...
Mais l'erreur est plutot du genre


Sinon pour faire un watermark, quel logiciel pour appliquer un watermark sur tout les images d'un répertoire et de ces sous répertoires ?




Citation:
Lors de l'utilisation d'un fichier .htaccess la cause d'une erreur 500 (erreur interne) est souvent un problème de syntaxe.
Ca serait donc la syntaxe du fichier .htaccess qui poserait problème ...
Space Cowboy est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 20/03/2007, 10h40   #4
Rédacteur
 
Avatar de Yogui
 
Homme Guillaume Rossolini
Directeur technique
Inscription : février 2004
Messages : 13 720
Détails du profil
Informations personnelles :
Nom : Homme Guillaume Rossolini
Localisation : France

Informations professionnelles :
Activité : Directeur technique

Informations forums :
Inscription : février 2004
Messages : 13 720
Points : 17 355
Points : 17 355
Salut

As-tu essayé :
Code :
action wtmrk /bdd/image/article/apparence/WaterMark.php
?

[Edit] Sinon au passage, il est plus intéressant de modifier tes images sur disque plutôt qu'à la volée, car le traitement d'images est très gourmand en ressources mémoire & CPU
__________________
Mes articles - Zend Certified Engineer (PHP + Zend Framework)
Ressources PHP - Ressources Zend Framework
Yogui est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 20/03/2007, 11h12   #5
Membre éclairé
 
Avatar de Space Cowboy
 
Inscription : avril 2005
Messages : 495
Détails du profil
Informations forums :
Inscription : avril 2005
Messages : 495
Points : 306
Points : 306
J'aurais aimé gardé mes images sans watermark, mais avec ce que j'aimerais faire, je vais me faire piller ...

Sinon la réponse est :
Citation:
Ce que vous voulez faire n'est pas supporté par Free.
Un bon logiciel facile à utiliser pour faire un watermark ? Xnview le fait très mal ...
Space Cowboy est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 11/05/2009, 09h05   #6
Invité de passage
 
Inscription : mai 2009
Messages : 1
Détails du profil
Informations forums :
Inscription : mai 2009
Messages : 1
Points : 1
Points : 1
Par défaut Tatouage numérique ou watermarking

Technique permettant d'ajouter des informations de copyright ou d'autres messages de vérification à une image. Watermark v1.0 est disponible en téléchargement sur
zapwallpaper est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 08h56.


 
 
 
 
Partenaires

Hébergement Web