How to watermark photos in php?

<?php
// Load the stamp and the photo to apply the watermark to
$stamp imagecreatefrompng('stamp.png');
$im imagecreatefromjpeg('photo.jpeg');// 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$stampimagesx($im) - $sx $marge_rightimagesy($im) - $sy $marge_bottom00imagesx($stamp), imagesy($stamp));// Output and free memory
header('Content-type: image/png');
imagepng($im);
imagedestroy($im);
?>

I have a website where users may upload images...

I need to add my logo (watermark) to the images once they are uploaded.

How can I do so?

And it is important that the watermark is in a corner where it will be visible, for example I have seen websites which generates a watermark on the fly, and puts the mark wherever the background of the main image is "the same color" so the watermark sticks out if you know what I mean.

Anybody have a good tutorial or article about this? Or know of any function in php which I would need to find the position of the watermark?

How to watermark photos in php?

Sandesh

1,1683 gold badges21 silver badges41 bronze badges

asked Feb 10, 2010 at 7:39

1

A good example in the PHP manual:

// Load the stamp and the photo to apply the watermark to
$stamp = imagecreatefrompng('stamp.png');
$im = imagecreatefromjpeg('photo.jpeg');

// 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);

Josh

7,9845 gold badges41 silver badges40 bronze badges

answered Feb 10, 2010 at 7:41

XUE CanXUE Can

7016 silver badges8 bronze badges

5

use this function
the type of watermark image must be "png"

 function watermark_image($target, $wtrmrk_file, $newcopy) {
    $watermark = imagecreatefrompng($wtrmrk_file);
    imagealphablending($watermark, false);
    imagesavealpha($watermark, true);
    $img = imagecreatefromjpeg($target);
    $img_w = imagesx($img);
    $img_h = imagesy($img);
    $wtrmrk_w = imagesx($watermark);
    $wtrmrk_h = imagesy($watermark);
    $dst_x = ($img_w / 2) - ($wtrmrk_w / 2); // For centering the watermark on any image
    $dst_y = ($img_h / 2) - ($wtrmrk_h / 2); // For centering the watermark on any image
    imagecopy($img, $watermark, $dst_x, $dst_y, 0, 0, $wtrmrk_w, $wtrmrk_h);
    imagejpeg($img, $newcopy, 100);
    imagedestroy($img);
    imagedestroy($watermark);
}

watermark_image('image_name.jpg','watermark.png', 'new_image_name.jpg');

How to watermark photos in php?

answered Nov 14, 2014 at 20:08

How to watermark photos in php?

iraqi_love4everiraqi_love4ever

5531 gold badge5 silver badges3 bronze badges

0

Good Example of watermark image and positioned at the center

<?php
// Load the stamp and the photo to apply the watermark to
$stamp = imagecreatefrompng('stampimg.png');
$im = imagecreatefrompng('mainimage.png');

// 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);

$imgx = imagesx($im);
$imgy = imagesy($im);
$centerX=round($imgx/2);
$centerY=round($imgy/2);

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

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

answered Dec 20, 2012 at 15:19

I found a much better solution which add a watermark dinamically through .htaccess, you can find the tutorial here:

Add watermark to images through htaccess

After uploading the custom .htaccess file, the watermark.php scrypt, and your watermark.png image, all the images in the folder and its subfolders will show the watermark, however, you will still keep the original file in the server.

Hope that helps someone the same that it helped to me.

answered Oct 11, 2012 at 16:13

Alberto S.Alberto S.

1,36118 silver badges34 bronze badges

3

ImageMagick works well for that. I've done it before. The whole business is a bit of a pain, though. Especially if you want fancy blending modes and the like.

answered Feb 10, 2010 at 7:51

Gabriel HurleyGabriel Hurley

39.2k13 gold badges59 silver badges87 bronze badges

// Load the stamp and the photo to apply the watermark to

$stamp = imagecreatefrompng('stamp.png');
$im = imagecreatefromjpeg('photo.jpg');
$save_watermark_photo_address = 'watermark_photo.jpg';

// 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');

imagejpeg($im, $save_watermark_photo_address, 80); 
imagedestroy($im);

answered Jan 24, 2014 at 6:28

How can I watermark image in PHP?

In PHP, adding an image onto another image layer as a watermark can be done using imagecopy() function. imagecopy($destinationImage, $srcImage, $destinatioX, $destinationY, $sourceX, $sourceY, $sourceWidth, $sourceHeight); This function copies source image onto destination image by overwriting destination image pixels.

How do I add a watermark to my photos?

Insert a picture watermark.
On the Design tab, select Watermark..
Select Custom Watermark, and then choose Picture Watermark..
Click Select Picture..
Find a picture of your own, or search Bing images..
Choose the picture you want, and select Insert..

How do I watermark an image in HTML?

Or maybe you want to automatically add a watermark to images? To add a watermark to an HTML page: Add <div id="watermark">MESSAGE</div> at the bottom of the page. Position it accordingly – #watermark { position: fixed; bottom: 0; right: 0; z-index:999; }

How do I add a watermark to my photos in WordPress?

Log in to the WordPress dashboard, then navigate to Plugins / Add New. In the top-right, type “Easy Watermark” into the search bar, then hit enter. Easy Watermark should be the first plugin returned – it's the one by Wojtek Szałkiewicz. Proceed to install the plugin by clicking Install Now, and then Activate Plugin.

Tải thêm tài liệu liên quan đến bài viết How to watermark photos in php?