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 相关文章推荐
一个简单的MySQL数据浏览器
Oct 09 PHP
56.com视频采集接口程序(PHP)
Sep 22 PHP
用Php编写注册后Email激活验证的实例代码
Mar 11 PHP
php curl获取网页内容(IPV6下超时)的解决办法
Jul 16 PHP
美图秀秀web开放平台--PHP流式上传和表单上传示例分享
Jun 22 PHP
php结合js实现点击超链接执行删除确认操作
Oct 31 PHP
浅谈php提交form表单
Jul 01 PHP
PHP微信刮刮卡 附微信接口
Jul 22 PHP
基于ThinkPHP实现的日历功能实例详解
Apr 15 PHP
PHP基于堆栈实现的高级计算器功能示例
Sep 15 PHP
浅谈PHP封装CURL
Mar 06 PHP
php和asp语法上的区别总结
May 12 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访问查询mysql数据的三种方法
2006/10/09 PHP
解析PHP中ob_start()函数的用法
2013/06/24 PHP
PHP仿博客园 个人博客(2) 数据库增添改删
2013/07/05 PHP
PHP简单字符串过滤方法示例
2016/09/04 PHP
取键盘键位ASCII码的网页
2007/07/30 Javascript
JS 添加网页桌面快捷方式的代码详细整理
2012/12/27 Javascript
jquery zTree异步加载简单实例分享
2013/02/05 Javascript
iframe的onreadystatechange事件在firefox下的使用
2014/04/16 Javascript
jQuery实现表格行上移下移和置顶的方法
2015/05/22 Javascript
jQuery实现类似老虎机滚动抽奖效果
2015/08/06 Javascript
JavaScript表单焦点自动切换代码
2016/07/24 Javascript
Js自动截取字符串长度,添加省略号(……)的实现方法
2017/03/06 Javascript
如何在JavaScript中谨慎使用代码注释
2019/06/21 Javascript
Vue.js中provide/inject实现响应式数据更新的方法示例
2019/10/16 Javascript
React中使用UMEditor的方法示例
2019/12/27 Javascript
详解微信小程序中var、let、const用法与区别
2020/01/11 Javascript
Python中list初始化方法示例
2016/09/18 Python
详解python string类型 bytes类型 bytearray类型
2017/12/16 Python
用python简单实现mysql数据同步到ElasticSearch的教程
2018/05/30 Python
Python实现查找最小的k个数示例【两种解法】
2019/01/08 Python
Python多进程入门、分布式进程数据共享实例详解
2019/06/03 Python
Pandas中resample方法详解
2019/07/02 Python
Pyinstaller 打包exe教程及问题解决
2019/08/16 Python
为什么相对PHP黑python的更少
2020/06/21 Python
css3 box-shadow阴影(外阴影与外发光)图示讲解
2017/08/11 HTML / CSS
CSS3之2D与3D变换的实现方法
2019/01/28 HTML / CSS
Canal官网:巴西女性时尚品牌
2019/10/16 全球购物
城市规划毕业生求职信
2013/10/10 职场文书
大学生心理活动总结
2014/07/04 职场文书
金融保险专业求职信
2014/09/03 职场文书
信息与计算机科学职业规划范文:成为一艘有方向的船
2014/09/11 职场文书
诉讼代理人授权委托书
2014/10/11 职场文书
预备党员群众路线教育实践活动思想汇报2014
2014/10/25 职场文书
工作作风懒散检讨书
2014/10/29 职场文书
Windows下redis下载、redis安装及使用教程
2021/06/02 Redis
Redis性能监控的实现
2021/07/09 Redis