站長資訊網(wǎng)
        最全最豐富的資訊網(wǎng)站

        一定搞得懂PHP中如何添加圖片水印

        在之前的文章中給大家?guī)砹恕禤HP中怎樣完成圖像的縮放和裁剪?(實(shí)例詳解)》,其中通過實(shí)例給大家介紹了在PHP中應(yīng)該怎樣去進(jìn)行圖形的縮放和裁剪,本篇文章繼續(xù)來看一看PHP中圖形處理的知識,我們應(yīng)該怎樣給圖片增加水印。希望對大家有幫助!

        一定搞得懂PHP中如何添加圖片水印

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

        在之前文章中對圖片進(jìn)行裁剪放到目標(biāo)圖上的操作和添加水印有些類似,為了實(shí)現(xiàn)添加水印,需要通過 imagecopymerge函數(shù)。

        imagecopymerge函數(shù)

        imagecopymerge函數(shù)的語法格式如下:

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

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

        接下來我們通過實(shí)例來看一下應(yīng)該怎樣給圖片增加水印:

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

        一定搞得懂PHP中如何添加圖片水印

        注意上面這個是示例圖片,下面的水印并不是我添加的,是網(wǎng)站自動添加的,為了區(qū)分,實(shí)例的水印是下面這樣的

        一定搞得懂PHP中如何添加圖片水印一定搞得懂PHP中如何添加圖片水印

        那接下來,操作如下:

        <?php //打開目標(biāo)圖片 $dst = imagecreatefrompng('test.png'); //打開Logo來源圖片 $src = imagecreatefrompng('logo.png'); //得到目標(biāo)圖片的寬高 $dst_info = getimagesize('test.png'); //得到logo圖片的寬高 $src_info = getimagesize('logo.png'); //放到最右下腳可得出圖片水印圖片需要開始的位置即: //x點(diǎn)位置:需要大圖的寬 - 小圖的寬; //y點(diǎn)位置:放大圖的高 - 小圖的高 $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); ?>

        輸出結(jié)果:

        一定搞得懂PHP中如何添加圖片水印

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

        拓展知識imagecopy函數(shù)

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

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

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

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

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

        實(shí)例如下:

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

        輸出結(jié)果:

        一定搞得懂PHP中如何添加圖片水印

        效果如下:

        一定搞得懂PHP中如何添加圖片水印

        推薦學(xué)習(xí):《PHP視頻教程》

        贊(0)
        分享到: 更多 (0)
        網(wǎng)站地圖   滬ICP備18035694號-2    滬公網(wǎng)安備31011702889846號
        主站蜘蛛池模板: 正在播放国产精品每日更新| 国产精品久久午夜夜伦鲁鲁| 久久这里只有精品18| 国产韩国精品一区二区三区| 国产午夜精品无码| 亚洲国产精品日韩| 国产精品国产三级国产潘金莲| 国产精品ⅴ无码大片在线看| 亚洲综合无码精品一区二区三区| 国产精品嫩草影院久久| 国产精品三级在线| 久久精品国产亚洲AV无码娇色| 亚洲av午夜成人片精品电影| 国产精品女同一区二区久久| 97国产精品视频| 日韩人妻精品无码一区二区三区| 老湿亚洲永久精品ww47香蕉图片| 91久久精品无码一区二区毛片| 大桥未久在线精品视频在线| 久久久久久亚洲Av无码精品专口| 亚洲精品一级无码中文字幕| 久久久久久国产精品美女| 国产亚洲精品看片在线观看| 成人一区二区三区精品| 91精品视频观看| 亚洲精品一二区| 久久精品国产免费一区| 国产精品天天影视久久综合网| jizz国产精品网站| 国产精品福利自产拍在线观看| 久久99精品久久久久婷婷| 亚洲国产精品一区第二页 | 国产精品电影在线| 久久亚洲欧美日本精品| 精品国产福利第一区二区三区| 99精品视频在线观看re| 国产麻豆精品一区二区三区v视界| 久久精品中文騷妇女内射| 久久99国产综合精品女同| 精品一区二区三区在线观看视频| 精品国产sm捆绑最大网免费站|