nginx如何通过PHP代理给图片加水印
发布时间 - 2023-05-29 00:00:00 点击率:次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 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
# nginx
# Watermark
# Class
# package
# param
# app
# url
相关栏目:
【
网站优化151355 】
【
网络推广146373 】
【
网络技术251813 】
【
AI营销90571 】
相关推荐:
如何在阿里云完成域名注册与建站?
如何用已有域名快速搭建网站?
如何为不同团队 ID 动态生成多个“认领值班”按钮
laravel怎么在请求结束后执行任务(Terminable Middleware)_laravel Terminable Middleware请求结束任务执行方法
如何在云主机上快速搭建网站?
千问怎样用提示词获取健康建议_千问健康类提示词注意事项【指南】
JavaScript中如何操作剪贴板_ClipboardAPI怎么用
如何确保FTP站点访问权限与数据传输安全?
Laravel如何实现文件上传和存储?(本地与S3配置)
html文件怎么打开证书错误_https协议的html打开提示不安全【指南】
使用C语言编写圣诞表白程序
深圳网站制作的公司有哪些,dido官方网站?
Laravel Blade模板引擎语法_Laravel Blade布局继承用法
企业在线网站设计制作流程,想建设一个属于自己的企业网站,该如何去做?
美食网站链接制作教程视频,哪个教做美食的网站比较专业点?
Laravel队列任务超时怎么办_Laravel Queue Timeout设置详解
如何快速选择适合个人网站的云服务器配置?
Laravel怎么使用Session存储数据_Laravel会话管理与自定义驱动配置【详解】
Laravel中DTO是什么概念_在Laravel项目中使用数据传输对象(DTO)
JavaScript如何实现错误处理_try...catch如何捕获异常?
laravel怎么用DB facade执行原生SQL查询_laravel DB facade原生SQL执行方法
Laravel中Service Container是做什么的_Laravel服务容器与依赖注入核心概念解析
如何在阿里云ECS服务器部署织梦CMS网站?
如何快速生成可下载的建站源码工具?
电商网站制作多少钱一个,电子商务公司的网站制作费用计入什么科目?
网站制作软件免费下载安装,有哪些免费下载的软件网站?
利用JavaScript实现拖拽改变元素大小
html5如何设置样式_HTML5样式设置方法与CSS应用技巧【教程】
如何制作一个表白网站视频,关于勇敢表白的小标题?
如何获取上海专业网站定制建站电话?
Laravel的Blade指令怎么自定义_创建你自己的Laravel Blade Directives
Laravel如何实现全文搜索功能?(Scout和Algolia示例)
js实现点击每个li节点,都弹出其文本值及修改
Laravel如何实现登录错误次数限制_Laravel自带LoginThrottles限流配置【方法】
Laravel怎么进行数据库回滚_Laravel Migration数据库版本控制与回滚操作
googleplay官方入口在哪里_Google Play官方商店快速入口指南
Laravel如何配置中间件Middleware_Laravel自定义中间件拦截请求与权限校验【步骤】
Windows10怎样连接蓝牙设备_Windows10蓝牙连接步骤【教程】
佛山网站制作系统,佛山企业变更地址网上办理步骤?
Linux安全能力提升路径_长期防护思维说明【指导】
什么是javascript作用域_全局和局部作用域有什么区别?
如何快速查询网站的真实建站时间?
JavaScript模板引擎Template.js使用详解
Laravel如何使用Eloquent ORM进行数据库操作?(CRUD示例)
Java遍历集合的三种方式
Linux网络带宽限制_tc配置实践解析【教程】
如何用5美元大硬盘VPS安全高效搭建个人网站?
网站建设要注意的标准 促进网站用户好感度!
Laravel如何集成Inertia.js与Vue/React?(安装配置)
西安市网站制作公司,哪个相亲网站比较好?西安比较好的相亲网站?


image/png");
imagepng($imageObj);
break;
default: //其他格式
}
}
}