watermark sur photo

Bonjour à vous,


je tente désespérément de faire un script de watermarking sur photo :
apposer un texte et/ou un logo sur chaque photo


Le principe :
chaque image est appelée à travers un script
script qui lit l'image source, la combine avec une autre, et la renvoit


appel de l'image :
<img src="watermark.php?source=date/images/mon-image-source.jpg">


exemple de script de watermark.php
<?php

$SourceFile = $_GET["source"];
list($width, $height) = getimagesize($SourceFile);

// Création de l'image
$im = imagecreatetruecolor($width, $height);

// Création de quelques couleurs
$white = imagecolorallocate($im, 255, 255, 255);
$grey = imagecolorallocate($im, 128, 128, 128);
$black = imagecolorallocate($im, 0, 0, 0);
imagefilledrectangle($im, 0, 0, $width, $height, $white);

// Le texte à dessiner
$text = '2000 &#169; Copyright';	// texte à écrire
$size = '20';	// taille de la font
$angle = '0';	// angle d'orientation du texte
$fontfile = 'themes/960/css/font/arial.ttf';	// url de la font



// Ajout du texte
imagettftext($im, $size, $angle, 10, 20, $black, $fontfile, $text);


// Utiliser imagepng() donnera un texte plus claire,
// comparé à l'utilisation de la fonction imagejpeg()

// Définition du content-type
header('Content-Type: image/png');
imagepng($im);
imagedestroy($im);
?>


hors les images ne sont pas créées en entière :( comme si le script n'était pas assez rapide


Avez-vous déjà réalisé ce type de script ?
En avez-vous un qui marche sous la main ?


ça fait 2 mois que je galère là et je n'en peux plus :(
Si quelqu'un pouvait me donner un petit coup de main ça serait cool
On pourra en faire un plugin.


Bien cordialement,
_____
D.San

Réponses

  • Hello,
    je te conseille d'utiliser la librairie phpThumb qui fait très bien ce genre de choses.
    http://phpthumb.sourceforge.net/demo/demo/phpThumb.demo.demo.php

    Le site fait un peu vieillot, mais c'est encore et toujours un outil au top de sa forme :)
  • oula wouais c'est vieillot ! ^^^
    merci du lien, je teste ça
    je télécharge la librairie et essai d'extraire ce que je cherche (je trouve ça un peu dommage de n'utiliser qu'une fonction d'une librairie et je n'ai pas envie que mon site ressemble à une usine à gaz au final .... )
  • c'est une ultra usine à gaz leur affaire !
    quelque soit le script utilisé, l'image apparaît tronquée :(
  • danielsandanielsan Member
    janvier 2013 modifié
    quelqu'un peut me dire si ma bufferisation du script est bonne ?
    <?php
    function watermarkImage ($SourceFile, $WaterMarkText, $DestinationFile) { 
    	list($width, $height) = getimagesize($SourceFile);
    	$image_p = imagecreatetruecolor($width, $height);
    	$image = imagecreatefromjpeg($SourceFile);
    	imagecopyresampled($image_p, $image, 0, 0, 0, 0, $width, $height, $width, $height); 
    	$black = imagecolorallocate($image_p, 0, 0, 0);
    	$font = 'arial.ttf';
    	$font_size = 10; 
    	imagettftext($image_p, $font_size, 0, 10, 20, $black, $font, $WaterMarkText);
    	if ($DestinationFile<>'') {
    		imagejpeg ($image_p, $DestinationFile, 100); 
    	} else {
    		header('Content-Type: image/jpeg');
    		ob_start();
    			imagejpeg($image_p, null, 100);
    		ob_end_flush();
    	};
    	imagedestroy($image); 
    	imagedestroy($image_p); 
    };
    
    $SourceFile = 'test.jpg';
    $DestinationFile = ''; 
    $WaterMarkText = 'Copyright';
    watermarkImage ($SourceFile, $WaterMarkText, $DestinationFile);
    ?>
    
  • StéphaneStéphane Member, Former PluXml Project Manager
    hum une temporisation... pas propre ça

    mais sinon tu peux le faire avec ça:
    http://php.net/manual/fr/function.sleep.php

    Consultant PluXml

    Ancien responsable et développeur de PluXml (2010 à 2018)

  • danielsandanielsan Member
    janvier 2013 modifié
    oups, t'as répondu avant que je modifie ma question :
    de comment faire à est-ce bon
    et de "temporisation" à "bufferisation"
  • danielsandanielsan Member
    janvier 2013 modifié
    avec la fonction sleep, comment savoir le temps qu'il faut pour générer l'image ?
    surtout que ça sera dans un diapo ... alors bon


    je ne sais pas comment m'en sortir avec cette histoire là :(
  • danielsandanielsan Member
    janvier 2013 modifié
  • Heu sur ta demo tout est ok chez moi, on voit bien l'image complète avec le @copyright
  • bah mince alors ... chez mon client et chez moi ça ne passe pas !
    par contre si j'utilise le port 84 tout est nickel
    http://daniel-rolland.com:84/watermark/test.php
    j'ai appelé OVH pour savoir de quoi il en retourne ...
  • StéphaneStéphane Member, Former PluXml Project Manager
    ça fonctionne bien chez moi meme sur
    http://daniel-rolland.com/watermark/test.php

    Consultant PluXml

    Ancien responsable et développeur de PluXml (2010 à 2018)

  • euh ... je n'comprends plus rien là ! ^^^
    je me disais que c'était ma connexion internet (qui est très pourrie ici), ou mon ordi, ou mon fournisseur, ou ma config mais manque de bol chez mon client c'est pareil (ça la fout mal ...)
    j'ai pourtant vidé le cache, utilisé FF ou IE mais en vain.
    M'enfin, une chose est sûr : ce n'est pas dû à PluXml !
Connectez-vous ou Inscrivez-vous pour répondre.