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写的serv-u的web申请账号的程序
Oct 09 PHP
可定制的PHP缩略图生成程式(需要GD库支持)
Mar 06 PHP
使用JSON实现数据的跨域传输的php代码
Dec 20 PHP
header中Content-Disposition的作用与使用方法
Jun 13 PHP
一个简单的网页密码登陆php代码
Jul 17 PHP
PHP配置把错误日志以邮件方式发送方法(Windows系统)
Jun 23 PHP
thinkPHP使用post方式查询时分页失效的解决方法
Dec 09 PHP
深入浅析php中sprintf与printf函数的用法及区别
Jan 08 PHP
PHP计算当前坐标3公里内4个角落的最大最小经纬度实例
Feb 26 PHP
PHP如何使用Memcached
Apr 05 PHP
PHP第三方登录―QQ登录实现方法
Feb 06 PHP
PHP使用curl_multi实现并发请求的方法示例
Apr 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
PHP生成压缩文件实例
2015/02/07 PHP
php编写批量生成不重复的卡号密码代码
2015/05/14 PHP
PHP函数nl2br()与自定义函数nl2p()换行用法分析
2016/04/02 PHP
PHP中header函数的用法及其注意事项详解
2016/06/13 PHP
ThinkPHP 3使用OSS的方法
2018/07/19 PHP
PHP面向对象程序设计(OOP)之方法重写(override)操作示例
2018/12/21 PHP
PHP实现Markdown文章上传到七牛图床的实例内容
2020/02/11 PHP
php加速缓存器opcache,apc,xcache,eAccelerator原理与配置方法实例分析
2020/03/02 PHP
基于JQuery 滑动与动画的说明介绍
2013/04/18 Javascript
JS实现文字向下滚动完整实例
2015/02/06 Javascript
Javascript编写俄罗斯方块思路及实例
2015/07/07 Javascript
jQuery实现仿美橙互联两级导航菜单效果完整实例
2015/09/17 Javascript
javascript设置页面背景色及背景图片的方法
2015/12/29 Javascript
AngularJS入门教程之XHR和依赖注入详解
2016/08/18 Javascript
jquery实现左右滑动式轮播图
2017/03/02 Javascript
JS实现获取毫秒值及转换成年月日时分秒的方法
2018/08/15 Javascript
jQuery三组基本动画与自定义动画操作实例总结
2020/05/09 jQuery
小程序角标的添加及绑定购物车数量进行实时更新的实现代码
2020/12/07 Javascript
[16:43]Heroes19_剃刀(完美)
2014/10/31 DOTA
Python实现爬取知乎神回复简单爬虫代码分享
2015/01/04 Python
Python的Django框架中URLconf相关的一些技巧整理
2015/07/18 Python
python 调用c语言函数的方法
2017/09/29 Python
Python爬虫获取整个站点中的所有外部链接代码示例
2017/12/26 Python
Python实现定时执行任务的三种方式简单示例
2019/03/30 Python
Python关于反射的实例代码分享
2020/02/20 Python
微信小程序之html5 canvas绘图并保存到系统相册
2019/06/20 HTML / CSS
Ibood荷兰:互联网每日最佳在线优惠
2019/02/28 全球购物
公司合作意向书范文
2014/07/30 职场文书
2015年销售助理工作总结
2015/05/11 职场文书
预备党员党支部意见
2015/06/02 职场文书
同意落户证明
2015/06/19 职场文书
golang协程池模拟实现群发邮件功能
2021/05/02 Golang
jupyter notebook保存文件默认路径更改方法汇总(亲测可以)
2021/06/09 Python
简单介绍Python的第三方库yaml
2021/06/18 Python
从QQtabBar看css命名规范BEM的详细介绍
2021/08/07 HTML / CSS
SpringBoot整合Minio文件存储
2022/04/03 Java/Android