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 相关文章推荐
初学者入门:细述PHP4的核心Zend
Sep 05 PHP
PHPAnalysis中文分词类详解
Jun 13 PHP
PHP生成随机数的方法实例分析
Jan 22 PHP
浅析THINKPHP的addAll支持的最大数据量
Feb 03 PHP
php 利用array_slice函数获取随机数组或前几条数据
Sep 30 PHP
最新制作ThinkPHP3.2.3完全开发手册
Nov 23 PHP
给PHP开发者的编程指南 第一部分降低复杂程度
Jan 18 PHP
php empty 函数判断结果为空但实际值却为非空的原因解析
May 28 PHP
在Laravel中使用DataTables插件的方法
May 29 PHP
PHP封装的分页类与简单用法示例
Feb 25 PHP
Yii2框架中一些折磨人的坑
Dec 15 PHP
Thinkphp 框架扩展之行为扩展原理与实现方法分析
Apr 23 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
php 各种应用乱码问题的解决方法
2010/05/09 PHP
PHP网页游戏学习之Xnova(ogame)源码解读(二)
2014/06/23 PHP
MAC下通过改apache配置文件切换php多版本的方法
2017/04/26 PHP
jquery 1.3.2 IE8中的一点点的小问题解决方法
2009/07/10 Javascript
ExtJS4 组件化编程,动态加载,面向对象,Direct
2011/05/12 Javascript
Jquery动态更改一张位图的src与Attr的使用
2013/07/31 Javascript
setTimeout和setInterval的深入理解
2013/11/08 Javascript
asp.net中oracle 存储过程(图文)
2015/08/12 Javascript
jQuery实现输入框下拉列表树插件特效代码分享
2015/08/27 Javascript
JS数组合并push与concat区别分析
2015/12/17 Javascript
微信开发 消息推送实现代码
2016/10/21 Javascript
js格式化时间的简单实例
2016/11/27 Javascript
jQuery中Chosen三级联动功能实例代码
2017/03/07 Javascript
jQuery插件zTree实现获取当前选中节点在同级节点中序号的方法
2017/03/08 Javascript
纯js实现画一棵树的示例
2017/09/05 Javascript
JavaScript实现百度搜索框效果
2020/03/26 Javascript
解决修复npm安装全局模块权限的问题
2018/05/17 Javascript
React如何实现浏览器打印部分内容详析
2019/05/19 Javascript
解决layui table表单提示数据接口请求异常的问题
2019/09/24 Javascript
[42:24]完美世界DOTA2联赛PWL S2 LBZS vs FTD.C 第三场 11.27
2020/12/01 DOTA
图文讲解选择排序算法的原理及在Python中的实现
2016/05/04 Python
十分钟利用Python制作属于你自己的个性logo
2018/05/07 Python
django解决跨域请求的问题
2018/11/11 Python
解决Python下imread,imwrite不支持中文的问题
2018/12/05 Python
python使用参数对嵌套字典进行取值的方法
2019/04/26 Python
css3 transform及原生js实现鼠标拖动3D立方体旋转
2016/06/20 HTML / CSS
美国在线印刷公司:PsPrint
2017/10/12 全球购物
Swisse官方海外旗舰店:澳大利亚销量领先,自然健康品牌
2017/12/15 全球购物
经典C++面试题一
2016/11/06 面试题
优秀信贷员先进事迹
2014/01/31 职场文书
带薪年假请假条
2014/02/04 职场文书
汽车销售经理岗位职责
2014/06/09 职场文书
2015年部门工作总结范文
2015/03/31 职场文书
关于运动会的广播稿
2015/08/19 职场文书
巾帼建功标兵先进事迹材料
2016/02/29 职场文书
汽车销售合同文本
2019/08/08 职场文书