Code solutions to PHP, JS, CSSCode source PHP, JS, CSS

Répandez vos soluces sur la planète

Love me
Solucior » PHP GD IMAGE » Watermark en PHP

Watermark en PHP

01/13/2012 par Dux   -   5/5 (3 notes)

Ce script applique un watermark (tatouage numérique) sur une image JPG, GIF ou PNG. Le watermark provient d'une image PNG en 24 bits pour préserver des zones vides autour du logo. Je conseille Photoshop pour le réaliser.
C'est le seul script qui modifie l'opacité d'une image avant de la coller sur une autre. Car en effet, PHP5 et la bibliothèque GD2 ne dispose pas de filtre opacité.
Son fonctionnement est simple. Il analyse la couleur de chaque pixel du watermark et le redessine sur une image vide. Si le pixel est transparent (valeur alpha 127 ou supérieure à 100), il redessine un pixel complètement transparent. Il ne reste plus qu'à coller le tatouage sur l'image.

Vous pouvez coder des options de positionnement et redimensionnement afin de répondre à toutes les envies.

Demo.

Image source (reduced to the display)
watermarking image source
PNG watermark image
watermarking image stamp
Result
watermarking image result

code source



 
<?php
/****************************************************/
/*            solucior.com by Dux                   */
/****************************************************/
// Image source
$image = "ipad.jpg";
// Watermark source
$watermark = "watermark.png";
// Watermark opacity (0 = solid to 127 = invisible)
$opacity = 80;



/****************************************************/
// Create img
list($x,$y,$type)=getimagesize($image);
if (
$type == 1) $img=imagecreatefromgif($image);
if (
$type == 2) $img=imagecreatefromjpeg($image);
if (
$type == 3) $img=imagecreatefromPNG($image);

// Create watermark
$wm = imagecreatefrompng($watermark);
list(
$xwm,$ywm)=getimagesize($watermark);

// Create the new transparent watermark
$new_wm = imagecreatetruecolor($xwm, $ywm);
imagealphablending($new_wm, false);
imagesavealpha($new_wm, true );


// Modify opacity pixel by pixel and set blank area with completely transparent pixels
for( $x=0; $x < $xwm; $x++ ) {
       for(
$y=0; $y < $ywm; $y++ ) {
               
$color_index = imagecolorat($wm, $x, $y);
               
$alpha = ($color_index & 0x7F000000) >> 24;
               
$c = ImageColorsForIndex( $wm, $color_index );
               if (
$alpha < 100)
                       
$px_color = imagecolorallocatealpha($new_wm, $c["red"], $c["green"], $c["blue"], $opacity);
               else
                       
$px_color = imagecolorallocatealpha($new_wm, 0,0,0, 127);
               
imagesetpixel ($new_wm, $x, $y, $px_color);
       }
}

// Paste new watermark on the image
imagecopyresampled( $img , $new_wm , 4 , 4 , 0 , 0 , $xwm/1.5 , $ywm/1.5 , $xwm , $ywm);

// Send as image JPEG good quality
header("Content-type: image/jpeg");
imageJPEG($img, '', 80);
?>
Noter ce code     |     Copié : 77x

Commentaires pour Watermark en PHP

marouane     08/19/2015 13:04
thanks realy thanks
Dux     05/08/2012 02:39
This script is sending to browser as image. You can build a loop to display an entire folder with this script as image.
rish     02/01/2012 16:33
it's realy great
Owang     01/26/2012 19:47
My friend, very good script.
But I have a doubt. but if I want to list a whole directory with watermark?

If I have a directory with images as example 10 podertia I put watermark on all and display on a single file, one below the other photo?
Ajouter un commentaire Pseudo
ZOOM


Watermark en PHP