最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

PHP實現(xiàn)圖片加水印功能

 更新時間:2022年06月22日 10:13:17   作者:camellia  
這篇文章主要和大家分享幾個php給圖片加水印的幾個自定義函數(shù),文中的示例代碼講解詳細(xì),對我們學(xué)習(xí)PHP有一定幫助,需要的可以參考一下

這里分享下php給圖片加水印的幾個自定義函數(shù)

給圖片加水印首先需要開啟GD庫。

用到的php函數(shù)是imagecopymerge () 和 imagecopy ()

imagecopymerge 函數(shù)可以支持兩個圖像疊加時,設(shè)置疊加的透明度

imagecopy 函數(shù)則不支持疊加透明。

基本概念就啰嗦到這,下邊是幾個函數(shù)的講解

在圖像上打上LOGO水印。

logo透明的png圖像,logo.png ,

使用imagecopymerge函數(shù),可以實現(xiàn)打上透明度為30%的水印圖標(biāo)

(可是當(dāng)我的圖片是jpeg,而我的水印圖片是png時,水印圖片原來透明的背景,變得一片黑灰,背景不透明了,我不知道這個問題是不是只有我自己遇見過)

使用imagecopy函數(shù),可以保留logo本身的透明信息,但無法實現(xiàn)透明度30%的水印疊加

我的解決方式是這樣

先用imagecopy()函數(shù)生成水印,將水印放到生成的空白圖像上

再用imagecopymerge()再將要加水印的圖片與其合成一張圖片,為其設(shè)置透明度

不啰嗦了,直接上函數(shù)。

/**
?*?圖片加水?。ㄟm用于png/jpg/gif格式)
 * @author camellia
 *?@param?$srcImg?原圖片
?*?@param?$waterImg?水印圖片
?*?@param?$savepath?保存路徑
?*?@param?$savename?保存名字
?*?@param?$positon?水印位置
?*?1:頂部居左,?2:頂部居右,?3:居中,?4:底部局左,?5:底部居右
?*?@param?$alpha?透明度?--?0:完全透明,?100:完全不透明
?*?@return?成功?--?加水印后的新圖片地址
?*??????????失敗?--?-1:原文件不存在,?-2:水印圖片不存在,?-3:原文件圖像對象建立失敗
?*??????????-4:水印文件圖像對象建立失敗?-5:加水印后的新圖片保存失敗
?*/
function?img_water_mark($srcImg,?$waterImg,?$savepath=null,?$savename=null,?$positon=5,?$alpha=50)
{
????$temp?=?pathinfo($srcImg);
????$name?=?$temp['basename'];
????$path?=?$temp['dirname'];
????$exte?=?$temp['extension'];
????$savename?=?$savename???$savename?:?$name;
????$savepath?=?$savepath???$savepath?:?$path;
????$savefile?=?$savepath?.'/'.?$savename;
????$srcinfo?=?@getimagesize($srcImg);//取得圖片信息,是一個數(shù)組,第一個值是寬,第二個值是高(因此水印圖片的寬高我們是可以限制的)
????if?(!$srcinfo)?{
????????return?-1;?//原文件不存在
????}
????$waterinfo?=?@getimagesize($waterImg);
????if?(!$waterinfo)?{
????????return?-2;?//水印圖片不存在
????}
????$srcImgObj?=?image_create_from_ext($srcImg);
????if?(!$srcImgObj)?{
????????return?-3;?//原文件圖像對象建立失敗
????}
????$waterImgObj?=?image_create_from_ext($waterImg);
????if?(!$waterImgObj)?{
????????return?-4;?//水印文件圖像對象建立失敗
????}
????switch?($positon)?{
????????//1頂部居左
????????case?1:?$x=$y=0;?break;
????????//2頂部居右
????????case?2:?$x?=?$srcinfo[0]-$waterinfo[0];?$y?=?0;?break;
????????//3居中
????????case?3:?$x?=?($srcinfo[0]-$waterinfo[0])/2;?$y?=?($srcinfo[1]-$waterinfo[1])/2;?break;
????????//4底部居左
????????case?4:?$x?=?0;?$y?=?$srcinfo[1]-$waterinfo[1];?break;
????????//5底部居右
????????case?5:?$x?=?$srcinfo[0]-$waterinfo[0];?$y?=?$srcinfo[1]-$waterinfo[1];?break;
????????default:?$x=$y=0;
????}
????imagecopymerge_gc($srcImgObj,?$waterImgObj,?$x,?$y,?0,?0,?$waterinfo[0],?$waterinfo[1],?$alpha);
????//?imagecopymerge($srcImgObj,?$waterImgObj,?$x,?$y,?0,?0,?$waterinfo[0],?$waterinfo[1],?$alpha);
????//?imagecopy($srcImgObj,?$waterImgObj,?$x,?$y,?0,?0,?$waterinfo[0],?$waterinfo[1]);
????switch?($srcinfo[2])?{
????????case?1:?imagegif($srcImgObj,?$savefile);?break;
????????case?2:?imagejpeg($srcImgObj,?$savefile);?break;
????????case?3:?imagepng($srcImgObj,?$savefile);?break;
????????default:?return?-5;?//保存失敗
????}
????imagedestroy($srcImgObj);
????imagedestroy($waterImgObj);
????return?$savefile;
}
?
/**
?*?由文件或?URL?創(chuàng)建一個新圖象
*/
function?image_create_from_ext($imgfile)
{
????$info?=?getimagesize($imgfile);
????$im?=?null;
????switch?($info[2])?{
????????case?1:?$im=imagecreatefromgif($imgfile);?break;
????????case?2:?$im=imagecreatefromjpeg($imgfile);?break;
????????case?3:?$im=imagecreatefrompng($imgfile);?break;
????}
????return?$im;
}
?
/**
?*?將背景透明的陪你過圖片與背景不透明的jpg圖片合成一張
?*?并保持png圖片背景透明
*/
function?imagecopymerge_gc($dst_im,?$src_im,?$dst_x,?$dst_y,?$src_x,?$src_y,?$src_w,?$src_h,?$pct){
????//?透明度
????$opacity?=?$pct;
????//?獲取水印圖片寬
????$w?=?imagesx($src_im);
????//?獲取水印圖片高
????$h?=?imagesy($src_im);
????//?函數(shù)用于創(chuàng)建一幅空白圖像
????$cut?=?imagecreatetruecolor($src_w,?$src_h);
????//??拷貝圖像的一部分
????imagecopy($cut,?$dst_im,?0,?0,?$dst_x,?$dst_y,?$src_w,?$src_h);
????//?計算透明度
????//?$opacity?=?100?-?$opacity;
????//?生成水印,將水印放到生成的空白圖像上
????imagecopy($cut,?$src_im,?0,?0,?$src_x,?$src_y,?$src_w,?$src_h);
????//?再將要加水印的圖片與其合成一張圖片,為其設(shè)置透明度
????imagecopymerge($dst_im,?$cut,?$dst_x,?$dst_y,?$src_x,?$src_y,?$src_w,?$src_h,?$opacity);
}
/**
?*?============================??我是分隔符??==============================
?*/

注:調(diào)用方法

img_water_mark(‘要加水印圖片' , ‘水印圖片' , ‘保存路徑');

其他參數(shù)函數(shù)的備注里邊有介紹。對應(yīng)其位置就好

但是,這個也是有問題的,測試的時候,發(fā)現(xiàn),當(dāng)水印圖片是png文件,被加水印的圖片也是png圖片時,就會出現(xiàn)水印圖片原來透明的背景,變得一片黑灰,背景不透明了。

這個問題,暫時還沒有想到解決的辦法,使用的時候,注意一下這個問題。

請注意:水印功能需要用到GD庫,請檢查下php是否開啟了GD庫擴展。

到此這篇關(guān)于PHP實現(xiàn)圖片加水印功能的文章就介紹到這了,更多相關(guān)PHP圖片加水印內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • PHP jpgraph庫的配置及生成統(tǒng)計圖表:折線圖、柱狀圖、餅狀圖

    PHP jpgraph庫的配置及生成統(tǒng)計圖表:折線圖、柱狀圖、餅狀圖

    本篇文章主要介紹了PHP jpgraph庫的配置及生成統(tǒng)計圖表:折線圖、柱狀圖、餅狀圖等的相關(guān)知識。具有很好的參考價值。下面跟著小編一起來看下吧
    2017-05-05
  • php遞歸法讀取目錄及文件的方法

    php遞歸法讀取目錄及文件的方法

    這篇文章主要介紹了php遞歸法讀取目錄及文件的方法,是非常經(jīng)典的遞歸算法,涉及php操作文件及目錄的技巧,需要的朋友可以參考下
    2015-01-01
  • 淺談PHP設(shè)計模式之對象池模式Pool

    淺談PHP設(shè)計模式之對象池模式Pool

    對象池模式是一種提前準(zhǔn)備了一組已經(jīng)初始化了的對象『池』而不是按需創(chuàng)建或者銷毀的創(chuàng)建型設(shè)計模式。對象池客戶端會向?qū)ο蟪刂姓埱笠粋€對象,然后使用這個返回的對象執(zhí)行相關(guān)操作。當(dāng)客戶端使用完畢,它將把這個特定類型的工廠對象返回給對象池,而不是銷毀掉這個對象。
    2021-05-05
  • php curl中g(shù)zip的壓縮性能測試實例分析

    php curl中g(shù)zip的壓縮性能測試實例分析

    這篇文章主要介紹了php curl中g(shù)zip的壓縮性能測試,結(jié)合實例形式分析了php使用curl的gzip壓縮耗時與效率,需要的朋友可以參考下
    2016-11-11
  • PHP實現(xiàn)基于回溯法求解迷宮問題的方法詳解

    PHP實現(xiàn)基于回溯法求解迷宮問題的方法詳解

    這篇文章主要介紹了PHP實現(xiàn)基于回溯法求解迷宮問題的方法,結(jié)合實例形式詳細(xì)分析了回溯法的原理、實現(xiàn)步驟與解決迷宮問題的相關(guān)操作技巧,需要的朋友可以參考下
    2017-08-08
  • php圖像處理函數(shù)imagecopyresampled用法詳解

    php圖像處理函數(shù)imagecopyresampled用法詳解

    這篇文章主要介紹了php圖像處理函數(shù)imagecopyresampled用法,結(jié)合實例形式詳細(xì)分析了imagecopyresampled函數(shù)的功能、參數(shù)、使用方法,需要的朋友可以參考下
    2016-12-12
  • 攻克CakePHP系列三 表單數(shù)據(jù)增刪改

    攻克CakePHP系列三 表單數(shù)據(jù)增刪改

    下面的代碼是CakePHP下對表單數(shù)據(jù)的增加,刪除,修改實現(xiàn)代碼
    2008-10-10
  • 使用PHP函數(shù)進(jìn)行網(wǎng)站性能監(jiān)控和優(yōu)化的代碼示例

    使用PHP函數(shù)進(jìn)行網(wǎng)站性能監(jiān)控和優(yōu)化的代碼示例

    在 PHP 中,有許多內(nèi)置函數(shù)和工具可以幫助我們實現(xiàn)網(wǎng)站的性能監(jiān)控和優(yōu)化,本文將介紹幾種常用的 PHP 函數(shù),并提供相應(yīng)的代碼示例,來幫助您更好地進(jìn)行網(wǎng)站性能監(jiān)控和優(yōu)化,需要的朋友可以參考下
    2024-06-06
  • PHP獲取photoshop寫入圖片文字信息的方法

    PHP獲取photoshop寫入圖片文字信息的方法

    這篇文章主要介紹了PHP獲取photoshop寫入圖片文字信息的方法,涉及php操作圖片的技巧,具有一定參考借鑒價值,需要的朋友可以參考下
    2015-03-03
  • php上傳文件的增強函數(shù)

    php上傳文件的增強函數(shù)

    php文件上傳的增強函數(shù)首先變得傻瓜簡單化,但并不是該函數(shù)的簡單化就影響他的超強功能,并且加上了強大的除錯功能這是一函數(shù),當(dāng)然你可以把它變成一個類的方法!
    2010-07-07

最新評論

枝江市| 河间市| 万安县| 闻喜县| 台江县| 彝良县| 平武县| 宁国市| 岢岚县| 黎川县| 时尚| 巴里| 达州市| 广东省| 邢台市| 长岛县| 类乌齐县| 织金县| 漯河市| 台北县| 丰城市| 太康县| 彭水| 杭州市| 富源县| 高要市| 遵义县| 屯门区| 武安市| 西丰县| 灌云县| 和龙市| 杭州市| 平安县| 德江县| 南城县| 蒙自县| 阿合奇县| 客服| 安新县| 壤塘县|