IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Bibliothèques et frameworks PHP Discussion :

[GD] Mettre un WaterMark automatique


Sujet :

Bibliothèques et frameworks PHP

  1. #1
    Membre éclairé Avatar de Space Cowboy
    Homme Profil pro
    chomeur
    Inscrit en
    Avril 2005
    Messages
    496
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : chomeur

    Informations forums :
    Inscription : Avril 2005
    Messages : 496
    Par défaut [GD] 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 :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    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 ?

  2. #2
    Membre éprouvé
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    1 448
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Janvier 2007
    Messages : 1 448
    Par défaut
    Tu as pensé à modifier les entêtes HHTP pour indiquer au navigateurs qu'il s'agissait de fichier du type gif/jpg, png ect ?

  3. #3
    Membre éclairé Avatar de Space Cowboy
    Homme Profil pro
    chomeur
    Inscrit en
    Avril 2005
    Messages
    496
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : chomeur

    Informations forums :
    Inscription : Avril 2005
    Messages : 496
    Par défaut
    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    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 ?




    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 ...

  4. #4
    Rédacteur

    Avatar de Yogui
    Homme Profil pro
    Directeur technique
    Inscrit en
    Février 2004
    Messages
    13 721
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yonne (Bourgogne)

    Informations professionnelles :
    Activité : Directeur technique

    Informations forums :
    Inscription : Février 2004
    Messages : 13 721
    Par défaut
    Salut

    As-tu essayé :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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

  5. #5
    Membre éclairé Avatar de Space Cowboy
    Homme Profil pro
    chomeur
    Inscrit en
    Avril 2005
    Messages
    496
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : chomeur

    Informations forums :
    Inscription : Avril 2005
    Messages : 496
    Par défaut
    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 :
    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 ...

  6. #6
    Invité de passage
    Inscrit en
    Mai 2009
    Messages
    1
    Détails du profil
    Informations forums :
    Inscription : Mai 2009
    Messages : 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

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 4
    Dernier message: 06/11/2008, 09h31
  2. Réponses: 3
    Dernier message: 13/05/2008, 08h01
  3. Mettre le curseur automatiquement à l'ouverture
    Par rafmos dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 08/03/2008, 20h44
  4. mettre une date automatique
    Par tolpac dans le forum Access
    Réponses: 7
    Dernier message: 20/02/2008, 08h44
  5. mettre des quote automatiquement
    Par mussara dans le forum Langage
    Réponses: 2
    Dernier message: 10/08/2006, 10h41

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo