Add 'Watermark' to images with php [closed]

匿名 (未验证) 提交于 2019-12-03 02:11:02

问题:

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?

回答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); 


回答2:

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


回答3:

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


回答4:

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.



回答5:

This can be done using an image manipulation library such as GD or ImageMagick. Here is a tutorial that explains a way to do it using GD:

http://articles.sitepoint.com/article/watermark-images-php



回答6:

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.



回答7:

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


标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!