nginx 配置代理
location?~?/image/.*.(gif|jpg|jpeg|png)$?{ ????proxy_pass?http://127.0.0.1:8888/test/watermark?url=$request_uri; }
/img/ 匹配要代理的目錄前綴,$request_uri 參數為訪問的圖片路徑。
php 水印類
/**?水印類 ?*?Class?Watermark ?*?@package?apptest ?*/ class?Watermark { ????/**?合成圖片水印 ?????*?@param?string?$dstImage?原圖片 ?????*?@param?string?$waterImg?水印圖 ?????*/ ????public?static?function?imageMarking($dstImage,?$waterImg){ ????????//獲取圖片信息 ????????$dstInfo?=?getimagesize($dstImage); ????????$waterInfo?=?getimagesize($waterImg); ????????//創建圖像 ????????$dstImgObj?=?self::imageCreateFrom($dstImage,?$dstInfo[2]); ????????$waterImgObj?=?self::imageCreateFrom($waterImg,?$waterInfo[2]); ????????//合成水印 ????????imagecopyresized($dstImgObj,$waterImgObj,0,?0,0,0,$dstInfo[0],?$dstInfo[1],$waterInfo[0],$waterInfo[1]); ????????//輸出圖片 ????????self::imageOut($dstImgObj,$waterInfo[2]); ????????//銷毀資源對象 ????????imagedestroy($dstImgObj); ????????imagedestroy($waterImgObj); ????} ????/**?生成圖片對象 ?????*?@param?string?$imgFile?圖片路徑 ?????*?@param?string?$type?圖片類型 ?????*?@return?false|GdImage|resource ?????*/ ????private?static?function?imageCreateFrom($imgFile,?$type)?{ ????????switch?($type)?{ ????????????case?IMAGETYPE_GIF: ????????????????return?imagecreatefromgif($imgFile); ????????????case?IMAGETYPE_JPEG: ????????????????return?imagecreatefromjpeg($imgFile); ????????????case?IMAGETYPE_PNG: ????????????????return?imagecreatefrompng($imgFile); ????????????default?:???//其他格式 ????????} ????} ????/**?輸出圖片 ?????*?@param?string?$imageObj ?????*?@param?string?$type ?????*/ ????private?static?function?imageOut($imageObj,$type){ ????????switch?($type)?{ ????????????case?1: ????????????????header("Content-Type:?image/gif"); ????????????????imagegif($imageObj); ????????????????break; ????????????case?2: ????????????????header("Content-Type:?image/jpeg"); ????????????????imagejpeg($imageObj); ????????????????break; ????????????case?3: ????????????????header("Content-Type:?image/png"); ????????????????imagepng($imageObj); ????????????????break; ????????????default:?//其他格式 ????????} ????} }
調用示例
public?function?watermark(){ ????//圖片路徑前綴 ????$image?=?'/data/img/'?.?input('url'); ????self::imageMarking($image,'watermark.png'); ????exit; }
? 版權聲明
文章版權歸作者所有,未經允許請勿轉載。
THE END