Home > Backend Development > PHP Tutorial > You must understand how to add image watermarks in PHP

You must understand how to add image watermarks in PHP

WBOY
Release: 2023-04-10 17:56:01
Original
6161 people have browsed it

In the previous article, I brought you "How to complete image scaling and cropping in PHP? (Detailed explanation of examples) 》, which introduces how to zoom and crop graphics in PHP through examples. This article continues to take a look at the knowledge of graphics processing in PHP and how we should add graphics to pictures. watermark. I hope everyone has to help!

You must understand how to add image watermarks in PHP

In our daily lives, in order to prevent our pictures from being stolen, we often see watermarks added to some pictures. For example, on our website, enter the picture file A watermark will be automatically added to the lower right corner. So how is this watermark effect achieved? The effect of adding watermarks to images can be achieved through PHP.

In the previous article, the operation of cropping the image and placing it on the target image is somewhat similar to adding a watermark. In order to add a watermark, you need to use the imagecopymerge function.

<strong><span style="font-size: 18px;">imagecopymerge</span></strong>Function

The syntax format of the imagecopymerge function is as follows :

imagecopymerge($目标图片,$来源图片,$目标开始的x ,$目标开始的y,$来源的x ,$来源的y ,$来源的宽 ,$来源的高 ,$透明度)
Copy after login

The transparency value is an integer from 0 to 100. The greater the transparency value, the more opaque the watermark is.

Next, let’s take a look at how to add a watermark to an image through an example:

First, we prepared a picture named test.png and a watermark named logo.png. The picture is placed in our root directory

You must understand how to add image watermarks in PHP

Note that the above is a sample picture, the watermark below is not added by me, it is automatically added by the website, in order to distinguish , the watermark of the example is as follows

You must understand how to add image watermarks in PHPYou must understand how to add image watermarks in PHP

Then, the operation is as follows:

<?php
//打开目标图片
$dst = imagecreatefrompng(&#39;test.png&#39;);
//打开Logo来源图片
$src = imagecreatefrompng(&#39;logo.png&#39;);
//得到目标图片的宽高
$dst_info = getimagesize(&#39;test.png&#39;);
//得到logo图片的宽高
$src_info = getimagesize(&#39;logo.png&#39;);
//放到最右下脚可得出图片水印图片需要开始的位置即:
//x点位置:需要大图的宽 - 小图的宽;
//y点位置:放大图的高 - 小图的高
$dst_x = $dst_info[0] - $src_info[0];
$dst_y = $dst_info[1] - $src_info[1];
//要将图片加在右下脚
imagecopymerge($dst, $src, $dst_x, $dst_y, 0, 0, $src_info[0], $src_info[1], 50);
header(&#39;Content-type:image/png&#39;);
imagepng($dst);
imagedestroy($dst);
imagedestroy($src);
?>
Copy after login

Output result:

You must understand how to add image watermarks in PHP

As can be seen from the above results, a watermark with a transparency of 50 is added through the imagecopymerge function.

Expand knowledge<strong><span style="font-size: 18px;">imagecopy</span></strong>Function

In addition to using the imagecopymerge function to add a watermark, you can also use the imagecopy() function, which can copy part of the function. Its syntax format is as follows:

imagecopy($目标图片, $来源图片,$目标图片x,$目标图片y,$来源图片x,$来源图片y,$来源图片宽,$来源图片高)
Copy after login

Its meaning is to select a rectangular area with width w and height h from (x, y) of the source image to (x, y) of the target image.

Use the imagesx() and imagesy() functions in PHP to obtain the width and height of the image respectively. Their syntax format is as follows:

imagesx(resource $image)
imagesy(resource $image)
Copy after login

The example is as follows:

<?php
    function watermark($img, $watermark, $district = 0,$watermarkquality = 95){
        $imginfo = @getimagesize($img);
        $watermarkinfo = @getimagesize($watermark);
        $img_w = $imginfo[0];
        $img_h = $imginfo[1];
        $watermark_w = $watermarkinfo[0];
        $watermark_h = $watermarkinfo[1];
        if($district == 0) $district = rand(1,9);
        if(!is_int($district) OR 1 > $district OR $district > 9) $district = 9;
        switch($district){
            case 1:
                $x = +5;
                $y = +5;
                break;
            case 2:
                $x = ($img_w - $watermark_w) / 2;
                $y = +5;
                break;
            case 3:
                $x = $img_w - $watermark_w - 5;
                $y = +5;
                break;
            case 4:
                $x = +5;
                $y = ($img_h - $watermark_h) / 2;
                break;
            case 5:
                $x = ($img_w - $watermark_w) / 2;
                $y = ($img_h - $watermark_h) / 2;
                break;
            case 6:
                $x = $img_w - $watermark_w;
                $y = ($img_h - $watermark_h) / 2;
                break;
            case 7:
                $x = +5;
                $y = $img_h - $watermark_h - 5;
                break;
            case 8:
                $x = ($img_w - $watermark_w) / 2;
                $y = $img_h - $watermark_h - 5;
                break;
            case 9:
                $x = $img_w - $watermark_w - 5;
                $y = $img_h - $watermark_h - 5;
                break;
        }
        switch ($imginfo[2]) {
            case 1:
                $im = @imagecreatefromgif($img);
                break;
            case 2:
                $im = @imagecreatefromjpeg($img);
                break;
            case 3:
                $im = @imagecreatefrompng($img);
                break;
        }
        switch ($watermarkinfo[2]) {
            case 1:
                $watermark_logo = @imagecreatefromgif($watermark);
                break;
            case 2:
                $watermark_logo = @imagecreatefromjpeg($watermark);
                break;
            case 3:
                $watermark_logo = @imagecreatefrompng($watermark);
                break;
        }
        if(!$im or !$watermark_logo) return false;
        $dim = @imagecreatetruecolor($img_w, $img_h);
        if(@imagecopy($dim, $im, 0, 0, 0, 0,$img_w,$img_h )){
            imagecopy($dim, $watermark_logo, $x, $y, 0, 0, $watermark_w, $watermark_h);
        }
        $file = dirname($img) . &#39;/w&#39; . basename($img);
        $result = imagejpeg ($dim,$file,$watermarkquality);
        imagedestroy($watermark_logo);
        imagedestroy($dim);
        imagedestroy($im);
        if($result){
            echo $img.&#39; 水印添加成功&#39;;
            return;
        }
        else {
            return false;
        }
    }
    $file = &#39;test.png&#39;;   //待加水印的图片地址
    $water = &#39;logo.png&#39;;  //水印图片的地址
    watermark($file, $water);
?>
Copy after login

Output result:

You must understand how to add image watermarks in PHP

The effect is as follows:

You must understand how to add image watermarks in PHP

Recommended study: "PHP Video Tutorial"

The above is the detailed content of You must understand how to add image watermarks in PHP. For more information, please follow other related articles on the PHP Chinese website!

Related labels:
source:php.cn
Statement of this Website
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template