0

0

php 加水印 等比例缩放程序

php中文网

php中文网

发布时间:2016-06-08 17:28:35

|

1288人浏览过

|

来源于php中文网

原创

php 加水印 等比例缩放程序
function watermark($desImg,$waterImg,$positon=1,$saveas=false,$alpha=30) 

011 { 

012 //获取目图片的基本信息 

013 $temp=pathinfo($desImg); 

014 $name=$temp["basename"];//文件名 

015 $path=$temp["dirname"];//文件所在的文件夹 

立即学习PHP免费学习笔记(深入)”;

016 $extension=$temp["extension"];//文件扩展名 

017 if($saveas) 

018 { 

019 //需要另存为 

020 $name=rtrim($name,".$extension")."_2.";//重新命名 

021 $savepath=$path."/".$name.$extension; 

022 } 

023 else

024 { 

025 //不需要另存为则覆盖原图 

026 $savepath=$path."/".$name; 

027 } 

028 $info=getImageInfo($desImg);//获取目标图片的信息 

029 $info2=getImageInfo($waterImg);//获取水印图片的信息 

030   

031 $desImg=create($desImg);//从原图创建 

032 $waterImg=create($waterImg);//从水印图片创建 

033 //位置1:顶部居左 

034 if($positon==1) 

035 { 

036 $x=0; 

037 $y=0; 

038 } 

039 //位置2:顶部居右 

040 if($positon==2) 

041 { 

042 $x=$info[0]-$info2[0]; 

043 $y=0; 

044 } 

045 //位置3:居中 

046 if($positon==3) 

047 { 

048 $x=($info[0]-$info2[0])/2; 

049 $y=($info[1]-$info2[1])/2; 

050 } 

051 //位置4:底部居左 

052 if($positon==4) 

053 { 

054 $x=0; 

055 $y=$info[1]-$info2[1]; 

056 } 

057 //位置5:底部居右 

058 if($positon==5) 

059 { 

060 $x=$info[0]-$info2[0]; 

061 $y=$info[1]-$info2[1]; 

062 } 

063 imagecopymerge($desImg,$waterImg,$x,$y,0,0,$info2[0],$info2[1],$alpha); 

064 imagejpeg($desImg,$savepath); 

065 imagedestroy($desImg); 

066 imagedestroy($waterImg); 

067 return $savepath; 

068 } 

069 /** 

070 * 获取图片的信息,width,height,image/type 

071 * @param string $src 图片路径 

072 * @return 数组 

073 * **/

074 function getImageInfo($src) 

075 { 

076 return getimagesize($src); 

077 } 

078 /** 

079 * 创建图片,返回资源类型 

080 * @param string $src 图片路径 

081 * @return resource $im 返回资源类型  

082 * **/

083 function create($src) 

084 { 

085 $info=getImageInfo($src); 

086 switch ($info[2]) 

087 { 

088 case 1: 

089 $im=imagecreatefromgif($src); 

090 break; 

091 case 2: 

092 $im=imagecreatefromjpeg($src); 

093 break; 

094 case 3: 

095 $im=imagecreatefrompng($src); 

096 break; 

097 } 

098 return $im; 

099 } 

100 /** 

101 * 缩略图主函数 

102 * @param string $src 图片路径 

103 * @param int $w 缩略图宽度 

104 * @param int $h 缩略图高度 

105 * @return mixed 返回缩略图路径 

106 * **/

自由画布
自由画布

百度文库和百度网盘联合开发的AI创作工具类智能体

下载

107   

108 function resize($src,$w,$h) 

109 { 

110 $temp=pathinfo($src); 

111 $name=$temp["basename"];//文件名 

112 $dir=$temp["dirname"];//文件所在的文件夹 

113 $extension=$temp["extension"];//文件扩展名 

114 $savepath="{$dir}/{$name}.thumb.jpg";//缩略图保存路径,新的文件名为*.thumb.jpg 

115   

116 //获取图片的基本信息 

117 $info=getImageInfo($src); 

118 $width=$info[0];//获取图片宽度 

119 $height=$info[1];//获取图片高度 

120 $per1=round($width/$height,2);//计算原图长宽比 

121 $per2=round($w/$h,2);//计算缩略图长宽比 

122   

123 //计算缩放比例 

124124 if($per1>$per2||$per1==$per2) 

125 { 

126 //原图长宽比大于或者等于缩略图长宽比,则按照宽度优先 

127 $per=$w/$width; 

128 } 

129 if($per1

130 { 

131 //原图长宽比小于缩略图长宽比,则按照高度优先 

132 $per=$h/$height; 

133 } 

134 $temp_w=intval($width*$per);//计算原图缩放后的宽度 

135 $temp_h=intval($height*$per);//计算原图缩放后的高度 

136 $temp_img=imagecreatetruecolor($temp_w,$temp_h);//创建画布 

137 $im=create($src); 

138 imagecopyresampled($temp_img,$im,0,0,0,0,$temp_w,$temp_h,$width,$height); 

139 if($per1>$per2) 

140 { 

141 imagejpeg($temp_img,$savepath); 

142 return addBg($savepath,$w,$h,"w"); 

143 //宽度优先,在缩放之后高度不足的情况下补上背景 

144 } 

145 if($per1==$per2) 

146 { 

147 imagejpeg($temp_img,$savepath); 

148 return $savepath; 

149 //等比缩放 

150 } 

151 if($per1

152 { 

153 imagejpeg($temp_img,$savepath); 

154   

155 return addBg($savepath,$w,$h,"h"); 

156 //高度优先,在缩放之后宽度不足的情况下补上背景 

157 } 

158 } 

159 /** 

160 * 添加背景 

161 * @param string $src 图片路径 

162 * @param int $w 背景图像宽度 

163 * @param int $h 背景图像高度 

164 * @param String $first 决定图像最终位置的,w 宽度优先 h 高度优先 wh:等比 

165 * @return 返回加上背景的图片 

166 * **/

167 function addBg($src,$w,$h,$fisrt="w") 

168 { 

169 $bg=imagecreatetruecolor($w,$h); 

170 $white = imagecolorallocate($bg,255,255,255); 

171 imagefill($bg,0,0,$white);//填充背景 

172   

173 //获取目标图片信息 

174 $info=getImageInfo($src); 

175 $width=$info[0];//目标图片宽度 

176 $height=$info[1];//目标图片高度 

177 $img=create($src); 

178 if($fisrt=="wh") 

179 { 

180 //等比缩放 

181 return $src; 

182 } 

183 else 

184 { 

185 if($fisrt=="w") 

186 { 

187 $x=0; 

188 $y=($h-$height)/2;//垂直居中 

189 } 

190 if($fisrt=="h") 

191 { 

192 $x=($w-$width)/2;//水平居中 

193 $y=0; 

194 } 

195 imagecopymerge($bg,$img,$x,$y,0,0,$width,$height,100); 

196 imagejpeg($bg,$src); 

197 imagedestroy($bg); 

198 imagedestroy($img); 

199 return $src; 

200 } 

201   

202 }

PHP速学教程(入门到精通)
PHP速学教程(入门到精通)

PHP怎么学习?PHP怎么入门?PHP在哪学?PHP怎么学才快?不用担心,这里为大家提供了PHP速学教程(入门到精通),有需要的小伙伴保存下载就能学习啦!

下载

本站声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

热门AI工具

更多
DeepSeek
DeepSeek

幻方量化公司旗下的开源大模型平台

豆包大模型
豆包大模型

字节跳动自主研发的一系列大型语言模型

通义千问
通义千问

阿里巴巴推出的全能AI助手

腾讯元宝
腾讯元宝

腾讯混元平台推出的AI助手

文心一言
文心一言

文心一言是百度开发的AI聊天机器人,通过对话可以生成各种形式的内容。

讯飞写作
讯飞写作

基于讯飞星火大模型的AI写作工具,可以快速生成新闻稿件、品宣文案、工作总结、心得体会等各种文文稿

即梦AI
即梦AI

一站式AI创作平台,免费AI图片和视频生成。

ChatGPT
ChatGPT

最最强大的AI聊天机器人程序,ChatGPT不单是聊天机器人,还能进行撰写邮件、视频脚本、文案、翻译、代码等任务。

相关专题

更多
AO3官网入口与中文阅读设置 AO3网页版使用与访问
AO3官网入口与中文阅读设置 AO3网页版使用与访问

本专题围绕 Archive of Our Own(AO3)官网入口展开,系统整理 AO3 最新可用官网地址、网页版访问方式、正确打开链接的方法,并详细讲解 AO3 中文界面设置、阅读语言切换及基础使用流程,帮助用户稳定访问 AO3 官网,高效完成中文阅读与作品浏览。

48

2026.02.02

主流快递单号查询入口 实时物流进度一站式追踪专题
主流快递单号查询入口 实时物流进度一站式追踪专题

本专题聚合极兔快递、京东快递、中通快递、圆通快递、韵达快递等主流物流平台的单号查询与运单追踪内容,重点解决单号查询、手机号查物流、官网入口直达、包裹进度实时追踪等高频问题,帮助用户快速获取最新物流状态,提升查件效率与使用体验。

11

2026.02.02

Golang WebAssembly(WASM)开发入门
Golang WebAssembly(WASM)开发入门

本专题系统讲解 Golang 在 WebAssembly(WASM)开发中的实践方法,涵盖 WASM 基础原理、Go 编译到 WASM 的流程、与 JavaScript 的交互方式、性能与体积优化,以及典型应用场景(如前端计算、跨平台模块)。帮助开发者掌握 Go 在新一代 Web 技术栈中的应用能力。

7

2026.02.02

PHP Swoole 高性能服务开发
PHP Swoole 高性能服务开发

本专题聚焦 PHP Swoole 扩展在高性能服务端开发中的应用,系统讲解协程模型、异步IO、TCP/HTTP/WebSocket服务器、进程与任务管理、常驻内存架构设计。通过实战案例,帮助开发者掌握 使用 PHP 构建高并发、低延迟服务端应用的工程化能力。

3

2026.02.02

Java JNI 与本地代码交互实战
Java JNI 与本地代码交互实战

本专题系统讲解 Java 通过 JNI 调用 C/C++ 本地代码的核心机制,涵盖 JNI 基本原理、数据类型映射、内存管理、异常处理、性能优化策略以及典型应用场景(如高性能计算、底层库封装)。通过实战示例,帮助开发者掌握 Java 与本地代码混合开发的完整流程。

3

2026.02.02

go语言 注释编码
go语言 注释编码

本专题整合了go语言注释、注释规范等等内容,阅读专题下面的文章了解更多详细内容。

62

2026.01.31

go语言 math包
go语言 math包

本专题整合了go语言math包相关内容,阅读专题下面的文章了解更多详细内容。

55

2026.01.31

go语言输入函数
go语言输入函数

本专题整合了go语言输入相关教程内容,阅读专题下面的文章了解更多详细内容。

27

2026.01.31

golang 循环遍历
golang 循环遍历

本专题整合了golang循环遍历相关教程,阅读专题下面的文章了解更多详细内容。

33

2026.01.31

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
Excel 教程
Excel 教程

共162课时 | 15.1万人学习

Pandas 教程
Pandas 教程

共15课时 | 1万人学习

C# 教程
C# 教程

共94课时 | 8.3万人学习

关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号