91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

PHP中怎么添加圖片水印

發布時間:2021-10-20 15:05:32 來源:億速云 閱讀:139 作者:iii 欄目:編程語言

本篇內容主要講解“PHP中怎么添加圖片水印”,感興趣的朋友不妨來看看。本文介紹的方法操作簡單快捷,實用性強。下面就讓小編來帶大家學習“PHP中怎么添加圖片水印”吧!

PHP中怎么添加圖片水印

在我們的日常生活中,為了不希望自己的圖片被盜用,經常能夠看到在一些圖片上添加水印,比如我們網站上,輸入圖片文件的話會自動在右下角加上一個水印,那么這種水印效果是怎么實現的呢?通過PHP就可以實現為圖片增加水印的效果。

在之前文章中對圖片進行裁剪放到目標圖上的操作和添加水印有些類似,為了實現添加水印,需要通過 imagecopymerge函數。

imagecopymerge函數

imagecopymerge函數的語法格式如下:

imagecopymerge($目標圖片,$來源圖片,$目標開始的x ,$目標開始的y,$來源的x ,$來源的y ,$來源的寬 ,$來源的高 ,$透明度)

其中透明度的值是0-100的整數,透明度的值越大,水印越不透明。

接下來我們通過實例來看一下應該怎樣給圖片增加水印:

首先準備了一個名為test.png的圖片和一個名為logo.png的水印圖片放到了我們的根目錄里

PHP中怎么添加圖片水印

注意上面這個是示例圖片,下面的水印并不是我添加的,是網站自動添加的,為了區分,實例的水印是下面這樣的

PHP中怎么添加圖片水印PHP中怎么添加圖片水印

那接下來,操作如下:

<?php
//打開目標圖片
$dst = imagecreatefrompng('test.png');
//打開Logo來源圖片
$src = imagecreatefrompng('logo.png');
//得到目標圖片的寬高
$dst_info = getimagesize('test.png');
//得到logo圖片的寬高
$src_info = getimagesize('logo.png');
//放到最右下腳可得出圖片水印圖片需要開始的位置即:
//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('Content-type:image/png');
imagepng($dst);
imagedestroy($dst);
imagedestroy($src);
?>

輸出結果:

PHP中怎么添加圖片水印

由上述結果可以看出,通過imagecopymerge函數添加了一個透明度為50的水印。

拓展知識imagecopy函數

不止使用imagecopymerge函數一種方法添加水印,也能夠通過 imagecopy() 函數,它能夠復制函數的一部分,它的語法格式如下:

imagecopy($目標圖片, $來源圖片,$目標圖片x,$目標圖片y,$來源圖片x,$來源圖片y,$來源圖片寬,$來源圖片高)

它的含義是,在來源圖片的(x,y)的地方選取寬為w,高為h的矩形區域到目標圖片的(x,y)上。

使用 PHP 中的 imagesx()、imagesy() 兩個函數來分別獲取圖片的寬度和高度。它們的語法格式如下:

imagesx(resource $image)
imagesy(resource $image)

實例如下:

<?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) . '/w' . basename($img);
        $result = imagejpeg ($dim,$file,$watermarkquality);
        imagedestroy($watermark_logo);
        imagedestroy($dim);
        imagedestroy($im);
        if($result){
            echo $img.' 水印添加成功';
            return;
        }
        else {
            return false;
        }
    }
    $file = 'test.png';   //待加水印的圖片地址
    $water = 'logo.png';  //水印圖片的地址
    watermark($file, $water);
?>

輸出結果:

PHP中怎么添加圖片水印

效果如下:

PHP中怎么添加圖片水印

到此,相信大家對“PHP中怎么添加圖片水印”有了更深的了解,不妨來實際操作一番吧!這里是億速云網站,更多相關內容可以進入相關頻道進行查詢,關注我們,繼續學習!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

php
AI

梁山县| 南康市| 徐汇区| 涿州市| 南部县| 永德县| 清丰县| 根河市| 城步| 青铜峡市| 双桥区| 顺平县| 太康县| 嘉峪关市| 赣州市| 平塘县| 沽源县| 常德市| 镇巴县| 运城市| 嘉善县| 慈利县| 黔江区| 神农架林区| 南汇区| 牡丹江市| 瑞昌市| 上栗县| 徐汇区| 赤城县| 海晏县| 石渠县| 九江县| 河曲县| 毕节市| 邵阳市| 潞城市| 安龙县| 天台县| 班戈县| 杨浦区|