Hello,

I uploaded some pictures on my website and i want to watermark them on preview. the watermark file is

<?php
// Load the stamp and the photo to apply the watermark to
$stamp = imagecreatefrompng('images/watermark.png');
$im = imagecreatefromjpeg('imgs/products/picture.jpg'); //needs to be dynamic instead of static

// Set the margins for the stamp and get the height/width of the stamp image
$marge_right = 10;
$marge_bottom = 10;
$sx = imagesx($stamp);
$sy = imagesy($stamp);

// Copy the stamp image onto our photo using the margin offsets and the photo 
// width to calculate positioning of the stamp. 
imagecopy($im, $stamp, imagesx($im) - $sx - $marge_right, imagesy($im) - $sy - $marge_bottom, 0, 0, imagesx($stamp), imagesy($stamp));

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

with the line 4 above, where the picture is being specifies [$im = imagecreatefromjpeg('imgs/products/picture.jpg');], it displays the picture with the watermark perfectly.

Now i need this script for dynamic pictures. I have query the picture from the database and store it to $pix. but by replacing 'picture.jpg' with a string $pix, its giving me error, what can i do, or is there a better watermark code?

Thanks

Recommended Answers

All 12 Replies

when you say

I have query the picture from the database and store it to $pix

you mean the image is stored as blob or binary?

Member Avatar for iamthwee

include the full path to the image eg.

$full_path = "imgs/products/";

then append the image from the db to it.

Member Avatar for diafol

Also ensure that the dynamic image is handled by the correct functions - obviously - so maybe getimagesize or similar with let you get the correct imagecreatefromjpeg|imagecreatefromgif|imagecreatefrompng, etc

Member Avatar for iamthwee

offtopic a framework like CodeIgniter handily takes care of images extension for you.

Thanks all, let me try your suggestions.

I have tries including the full path but still the same thing.

$get_pix = mysql_query("SELECT * FROM imgs WHERE pid='$id' && status='m'");
$row = mysql_fetch_array($get_pix);{
$spix = $row[spix];
}

$stamp = imagecreatefrompng('images/watermark-thumb.png');
$im = imagecreatefromjpeg('imgs/products/$spix');

$marge_right = 10;
$marge_bottom = 10;
$sx = imagesx($stamp);
$sy = imagesy($stamp);

imagecopy($im, $stamp, imagesx($im) - $sx - $marge_right, imagesy($im) - $sy - $marge_bottom, 0, 0, imagesx($stamp), imagesy($stamp));

header('Content-type: image/png');
imagepng($im);
imagedestroy($im);

or is there any other way our?

try changing this

$spix = $row[spix];

to this

$spix = $row['spix'];

Thanks Veedeoo, i tried it but still the same error. i even tried it as below

$pix = "imgs/products/".$spix;

$im = imagecreatefromjpeg($spix);

may be i should look for another watermark script then.

Member Avatar for diafol

do:

$pix = "imgs/products/".$spix;

echo $pix;

if(file_exists($pix))
{
    echo " exists";
}else{
    echo " does not exist";
}
echo "<br />";
Member Avatar for Zagga

Change:
$im = imagecreatefromjpeg('imgs/products/$spix');
to:
$im = imagecreatefromjpeg("imgs/products/$spix");
(variables inside single quotes are treated as text, not parsed as variables)
Are you sure the query is returning a result?

Member Avatar for iamthwee

This isn't a problem with the script... You just have your paths screwed up... At least that's what I gather from your description of your problem. But glad you got it solved anyhoo.

Be a part of the DaniWeb community

We're a friendly, industry-focused community of developers, IT pros, digital marketers, and technology enthusiasts meeting, networking, learning, and sharing knowledge.