php图片处理:加水印、缩略图的实现(自定义函数:watermark、thumbnail)


Posted in PHP onDecember 02, 2010

废话不说了,贴代码:

<?php 
/************************************ 
//函数: watermark($bigimg, $smallimg, $coord = 1) 
//作用: 添加水印 
//参数: 
$bigimg 必选。大图片--要加上水印的图片 
$smallimg 必选。小图片 
$coord 可选。水印在大图中的位置, 
1 左上角; 2 右上角; 3 右下角; 4 左下角; 5 中间 
//示例: watermark('datu.png', 'xiaotu.png', 3); //给datu.png打上水印,水印位置在右下角 
*************************************/ 
function watermark($bigimg, $smallimg, $coord = 1){ 
//载入两张图片,并转成php识别的编码格式, 
//等同于 imagecreate 函数,只不过这里创建的不是一个空图片。 
$bi = getimagesize($bigimg); 
switch($bi[2]){ 
case 1: 
$im1 = imagecreatefromgif($bigimg);break; 
case 2; 
$im1 = imagecreatefromjpeg($bigimg);break; 
case 3; 
$im1 = imagecreatefrompng($bigimg);break; 
} 
$si = getimagesize($smallimg); 
switch($si[2]){ 
case 1: 
$im2 = imagecreatefromgif($smallimg);break; 
case 2; 
$im2 = imagecreatefromjpeg($smallimg);break; 
case 3; 
$im2 = imagecreatefrompng($smallimg);break; 
} 
// 创建水印--原理:复制小图到大图上。这里注意坐标值的计算 
switch($coord){ 
case 1: 
imagecopy ( $im1, $im2, 0, 0, 0, 0, $si[0], $si[1] ); break; 
case 2: 
imagecopy ( $im1, $im2, $bi[0]-$si[0], 0, 0, 0, $si[0], $si[1] ); break; 
case 3: 
imagecopy ( $im1, $im2, $bi[0]-$si[0], $bi[1]-$si[1], 0, 0, $si[0], $si[1] ); break; 
case 4: 
imagecopy ( $im1, $im2, 0, $bi[1]-$si[1], 0, 0, $si[0], $si[1] ); break; 
case 5: 
imagecopy ( $im1, $im2, ($bi[0]-$si[0])/2, ($bi[1]-$si[1])/2, 0, 0, $si[0], $si[1] ); break; 
} 
//根据后缀名生成不同格式的图片文件 
switch($bi[2]){ 
case 1: 
imagegif($im1);break; 
case 2; 
imagejpeg($im1);break; 
case 3; 
imagepng($im1);break; 
} 
imagedestroy($im1); 
} 
/************************************************ 
//函数: thumbnail($srcimg, $multiple) 
//作用: 生成一张缩略图 
//参数: 
// $srcimg 必选。源图片文件名 
// $multiple 可选。缩略倍数,默认为2倍,即缩小为原来的1/2 
//注意: 只支持gif、jpg、png的格式图片。 
//示例: thumbnail('我的图片.jpg', 5); 
*************************************************/ 
function thumbnail($srcimg, $multiple = 2){ 
//载入图片并保存其信息到数组 
$srcimg_arr = getimagesize($srcimg); 
//计算缩略倍数 
$thumb_width = $srcimg_arr[0] / $multiple; 
$thumb_height = $srcimg_arr[1] / $multiple; 
//判断:要建立什么格式的图片(转成php识别的编码) 
switch($srcimg_arr[2]){ 
case 1: 
$im = imagecreatefromgif($srcimg);break; 
case 2; 
$im = imagecreatefromjpeg($srcimg);break; 
case 3; 
$im = imagecreatefrompng($srcimg);break; 
} 
//开始缩略操作 
$thumb = imagecreatetruecolor($thumb_width, $thumb_height); 
imagecopyresized($thumb, $im, 0, 0, 0 ,0, $thumb_width, $thumb_height, $srcimg_arr[0], $srcimg_arr[1]); 
switch($srcimg_arr[2]){ 
case 1: 
imagegif($thumb); break; 
case 2; 
imagejpeg($thumb); break; 
case 3; 
imagepng($thumb); break; 
} 
imagepng($thumb); 
imagedestroy($thumb); 
} 
//测试 时不要同时使用这两个函数。 
//watermark('datu.png','xiaotu.png',5); 
thumbnail('abc.png',3); 
?>
PHP 相关文章推荐
第二节 对象模型 [2]
Oct 09 PHP
一个可以删除字符串中HTML标记的PHP函数
Oct 09 PHP
codeigniter使用技巧批量插入数据实例方法分享
Dec 31 PHP
php进行支付宝开发中return_url和notify_url的区别分析
Dec 22 PHP
php检查字符串中是否包含7位GSM字符的方法
Mar 17 PHP
thinkphp,onethink和thinkox中验证码不显示的解决方法分析
Jun 06 PHP
Yii2.0 Basic代码中路由链接被转义的处理方法
Sep 21 PHP
php使用str_shuffle()函数生成随机字符串的方法分析
Feb 17 PHP
详细解读php的命名空间(二)
Feb 21 PHP
php弹出提示框的是实例写法
Sep 26 PHP
Laravel框架下载,安装及路由操作图文详解
Dec 04 PHP
详解Laravel服务容器的优势
May 29 PHP
php小偷相关截取函数备忘
Nov 28 #PHP
php与paypal整合方法
Nov 28 #PHP
网站用php实现paypal整合方法
Nov 28 #PHP
paypal即时到账php实现代码
Nov 28 #PHP
解析PayPal支付接口的PHP开发方式
Nov 28 #PHP
php购物网站支付paypal使用方法
Nov 28 #PHP
IP攻击升级,程序改进以对付新的攻击
Nov 23 #PHP
You might like
twig里使用js变量的方法
2016/02/05 PHP
PHP目录操作实例总结
2016/09/27 PHP
PHP实现生成推广海报的方法详解
2018/03/14 PHP
Yii框架参数配置文件params用法实例分析
2019/09/11 PHP
Laravel使用原生sql语句并调用的方法
2019/10/09 PHP
laravel接管Dingo-api和默认的错误处理方式
2019/10/25 PHP
分享20多个很棒的jQuery 文件上传插件或教程
2011/09/04 Javascript
js动画(animate)简单引擎代码示例
2012/12/04 Javascript
js菜单点击显示或隐藏效果的简单实例
2014/01/13 Javascript
javascript实现漂亮的拖动层,窗口拖拽特效
2015/04/24 Javascript
JavaScript模块规范之AMD规范和CMD规范
2015/10/27 Javascript
jQuery form 表单验证插件(fieldValue)校验表单
2016/01/24 Javascript
详解JavaScript的另类写法
2016/04/11 Javascript
jQuery unbind 删除绑定事件详解
2016/05/24 Javascript
jQuery通过ajax请求php遍历json数组到table中的代码(推荐)
2016/06/12 Javascript
JS实现根据文件字节数返回文件大小的方法
2016/08/02 Javascript
Bootstrap实现带动画过渡的弹出框
2016/08/09 Javascript
JavaScript制作简单的框选图表
2017/05/15 Javascript
vue组件 $children,$refs,$parent的使用详解
2017/07/31 Javascript
vue的mixins属性详解
2018/03/14 Javascript
详解js加减乘除精确计算
2019/03/19 Javascript
[01:07:46]完美世界DOTA2联赛循环赛 Magma vs IO BO2第二场 11.01
2020/11/02 DOTA
[42:24]完美世界DOTA2联赛PWL S2 LBZS vs FTD.C 第三场 11.27
2020/12/01 DOTA
浅析Python 读取图像文件的性能对比
2019/03/07 Python
Python分析彩票记录并预测中奖号码过程详解
2019/07/09 Python
Python loguru日志库之高效输出控制台日志和日志记录
2020/03/07 Python
什么时候用assert
2015/05/08 面试题
保送生自荐信范文
2013/10/06 职场文书
一年级语文教学反思
2014/02/13 职场文书
初中班主任寄语
2014/04/04 职场文书
人力资源管理专业自荐信
2014/06/24 职场文书
无私奉献演讲稿
2014/09/04 职场文书
个人工作表现评价材料
2014/09/21 职场文书
书法社团活动总结
2015/05/07 职场文书
结婚典礼主持词
2015/06/29 职场文书
积极心理学课程心得体会
2016/01/22 职场文书