
location ~ /image/.*\.(gif|jpg|jpeg|png)$ {
proxy_pass http://127.0.0.1:8888/test/watermark?url=$request_uri;
}/img/ 匹配要代理的目录前缀,$request_uri 参数为访问的图片路径。
/** 水印类
* Class Watermark
* @package app\test
*/
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;
}
PHP怎么学习?PHP怎么入门?PHP在哪学?PHP怎么学才快?不用担心,这里为大家提供了PHP速学教程(入门到精通),有需要的小伙伴保存下载就能学习啦!
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号