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 相关文章推荐
用PHP连mysql和oracle数据库性能比较
Oct 09 PHP
PHP memcache扩展的三种安装方法
Apr 26 PHP
php防攻击代码升级版
Dec 29 PHP
PHP禁止页面缓存的代码
Oct 23 PHP
PHP 多维数组的排序问题 根据二维数组中某个项排序
Nov 09 PHP
PHP无限分类(树形类)的深入分析
Jun 02 PHP
解析coreseek for sphinx的使用
Jun 21 PHP
ThinkPHP路由机制简介
Mar 23 PHP
Yii2 rbac权限控制之rule教程详解
Jun 23 PHP
php微信公众号开发(3)php实现简单微信文本通讯
Dec 15 PHP
php curl上传、下载、https登陆实现代码
Jul 23 PHP
php 广告点击统计代码(php+mysql)
Feb 21 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实现读取超大文件的方法
2014/07/28 PHP
从刷票了解获得客户端IP的方法
2015/09/21 PHP
php读取出一个文件夹及其子文件夹下所有文件的方法示例
2017/06/15 PHP
PHP封装的数据库模型Model类完整示例【基于PDO】
2019/03/14 PHP
PHP如何将图片文件上传到另外一台服务器上
2019/08/26 PHP
兼容IE和FF的图片上传前预览js代码
2013/05/28 Javascript
jquery实现多级下拉菜单的实例代码
2013/10/02 Javascript
jQuery 设置 CSS 属性示例介绍
2014/01/16 Javascript
js在指定位置增加节点函数insertBefore()用法实例
2015/01/12 Javascript
JS实现表格数据各种搜索功能的方法
2015/03/03 Javascript
jQuery中的insertBefore(),insertAfter(),after(),before()区别介绍
2016/09/01 Javascript
浅谈React Native Flexbox布局(小结)
2018/01/08 Javascript
使用mixins实现elementUI表单全局验证的解决方法
2019/04/02 Javascript
node.js基础知识汇总
2020/08/25 Javascript
[01:20]2018DOTA2亚洲邀请赛总决赛战队LGD晋级之路
2018/04/07 DOTA
Python的ORM框架SQLAlchemy入门教程
2014/04/28 Python
Python函数嵌套实例
2014/09/23 Python
Python实现发送QQ邮件的封装
2017/07/14 Python
python numpy函数中的linspace创建等差数列详解
2017/10/13 Python
Python使用pickle模块存储数据报错解决示例代码
2018/01/26 Python
python使用筛选法计算小于给定数字的所有素数
2018/03/19 Python
python利用高阶函数实现剪枝函数
2018/03/20 Python
在python 不同时区之间的差值与转换方法
2019/01/14 Python
使用PyQt4 设置TextEdit背景的方法
2019/06/14 Python
解决py2exe打包后,总是多显示一个DOS黑色窗口的问题
2019/06/21 Python
python3中类的继承以及self和super的区别详解
2019/06/26 Python
在Python中合并字典模块ChainMap的隐藏坑【推荐】
2019/06/27 Python
Python headers请求头如何实现快速添加
2020/11/03 Python
学生会竞选演讲稿
2014/04/24 职场文书
演讲稿的格式及范文
2014/08/22 职场文书
村主任“四风”问题个人整改措施
2014/10/04 职场文书
党的群众路线教育实践活动查摆问题自查报告
2014/10/10 职场文书
植物园观后感
2015/06/11 职场文书
《文化苦旅》读后感:阅读,让人诗意地栖居在大地上
2019/12/24 职场文书
不要在HTML中滥用div
2021/05/08 HTML / CSS
分析ZooKeeper分布式锁的实现
2021/06/30 Java/Android