Question

:) I'm actually working on an online photo book and to complete it, i need to create a watermarking script. But it definitely doesn't works! I REALLY do not understand why. I need to resize proportionally the watermark; I have made all the ratio calculations, everything seems clear, but nothing works, help me please!

Here is the code:

<?php
// Load the stamp and the photo to apply the watermark to
$stamp = imagecreatefrompng('stamp.png');
$im = imagecreatefromjpeg('531a1251532b0.jpg');

// get the height/width of the stamp image
$sx = imagesx($stamp);
$sy = imagesy($stamp);
$syimg = imagesy($im);

//percentage of the size(4%)
$percent = 4/$syimg;
$sx2 = $sx * $percent;
$sy2 = $sy * $percent;

$posx = (imagesx($im) / 2) - $sx2;
$posy = (imagesy($im) / 2) - $sy2;
//checking (everything is ok!)
//echo "per: ". $percent;
//echo "<br>\n sx: ". $sx2;
//echo "<br>\n posx: ". $posx;
//echo "<br>\n sy: ". $sy2;
//echo "<br>\n posy: ". $posy;
//echo "<br>\n syimg : ". $syimg;
//echo "<br>\n sximg : ". imagesx($im);

// Copy the stamp image onto the photo 
// width to calculate positioning of the stamp.
imagecopy($im, $stamp, round($posx), round($posy), 0, 0, round($sx2), round($sy2));

// Output and free memory
header('Content-type: image/jpg');
imagepng($im);
imagedestroy($im);
?>

Thanks for the future replies!

Was it helpful?

Solution

Thanks Ryan Vincent and simON for your help! :) I've finally (After many hours and many headaches) found the solution, as you can see bellow, i find the mine more simple:

        <?php
        if(empty($_GET['i'])){

        //displays a error image if GET['i'] is empty

        $im = imagecreatefrompng("scr/m/e.png");

        //keeps the transparency of the picture
        imagealphablending( $im, false );
        imagesavealpha( $im, true );

        // Output and free memory
        header('Content-Type: image/png');
        imagepng($im);
        imagedestroy($im);

        }elseif(!file_exists('img/'.$_GET['i'])){

        //displays an error image if the file doesn't exists in the img folder
        $im = imagecreatefrompng("scr/m/e.png");

        //keeps the transparency of the picture
        imagealphablending( $im, false );
        imagesavealpha( $im, true );

        // Output and free memory
        header('Content-Type: image/png');
        imagepng($im);
        imagedestroy($im);
        }else{
        // Load the stamp and the photo to apply the watermark to
        $stamp = imagecreatefrompng('scr/m/w.png');
        $get = $_GET['i'];
        $im = imagecreatefromjpeg('img/'.$get);

        // get the height/width of the stamp image
        $sx = imagesx($stamp);
        $sy = imagesy($stamp);
        $sximg = imagesx($im);

        //percentage of the size(5%)
        $percent = $sximg * 0.15;

        //positionnig the stamp to the center
        $posx = round(imagesx($im) / 2) - round($percent / 2);
        $posy = round(imagesy($im) / 2) - round($percent / 2);

        //Create the final resized watermark stamp
        $dest_image = imagecreatetruecolor($percent, $percent);

        //keeps the transparency of the picture
        imagealphablending( $dest_image, false );
        imagesavealpha( $dest_image, true );
        //resizes the stamp
        imagecopyresampled($dest_image, $stamp, 0, 0, 0, 0, $percent, $percent, $sx, $sy);

        // Copy the resized stamp image onto the photo

        imagecopy($im, $dest_image, round($posx), round($posy), 0, 0, $percent, $percent);

        // Output and free memory
        header('Content-type: image/jpg');
        imagepng($im);
        imagedestroy($im);
        }
        ?>

Thank you again for your replies. I hope my script will help everybody in the same situation that I was! :) Good night (I'm french, it's the night :3 ) !

Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top