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 相关文章推荐
BBS(php &amp; mysql)完整版(三)
Oct 09 PHP
定制404错误页面,并发信给管理员的程序
Oct 09 PHP
探讨:如何编写PHP扩展
Jun 13 PHP
php函数指定默认值方法的小例子
Dec 04 PHP
PHP使用递归生成文章树
Apr 21 PHP
Yii使用Captcha验证码的方法
Dec 28 PHP
PHP的PDO常用类库实例分析
Apr 07 PHP
PHP递归遍历多维数组实现无限分类的方法
May 06 PHP
PHP7+Nginx的配置与安装教程详解
May 10 PHP
php实现文件与16进制相互转换的方法示例
Feb 16 PHP
PHP封装的简单连接MongoDB类示例
Feb 13 PHP
Windows上php5.6操作mongodb数据库示例【配置、连接、获取实例】
Feb 13 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+java实现自动新闻滚动窗口
2006/10/09 PHP
PHP常用代码
2006/11/23 PHP
使用淘宝IP库获取用户ip地理位置
2013/10/27 PHP
php 批量替换html标签的实例代码
2013/11/26 PHP
PHP获取MySql新增记录ID值的3种方法
2014/06/24 PHP
Windows下的PHP 5.3.x安装 Zend Guard Loader教程
2014/09/06 PHP
PHP实现的观察者模式实例
2017/06/21 PHP
基于jquery的DIV随滚动条滚动而滚动的代码
2012/07/20 Javascript
js中创建对象的几种方式示例介绍
2014/01/26 Javascript
简述Jquery与DOM对象
2015/07/10 Javascript
js正则表达式最长匹配(贪婪匹配)和最短匹配(懒惰匹配)用法分析
2016/12/27 Javascript
微信小程序访问node.js接口服务器搭建教程
2017/04/25 Javascript
vue2 自定义动态组件所遇到的问题
2017/06/08 Javascript
基于daterangepicker日历插件使用参数注意的问题
2017/08/10 Javascript
初识 Vue.js 中的 *.Vue文件
2017/11/22 Javascript
nodejs+express搭建多人聊天室步骤
2018/02/12 NodeJs
Node.js Koa2使用JWT进行鉴权的方法示例
2018/08/17 Javascript
JS闭包原理与应用经典示例
2018/12/20 Javascript
jQuery操作元素的内容和样式完整实例分析
2020/01/10 jQuery
JavaScript canvas实现跟随鼠标事件
2020/02/10 Javascript
vue实现简单瀑布流布局
2020/05/28 Javascript
JS使用setInterval计时器实现挑战10秒
2020/11/08 Javascript
JavaScript实现手风琴效果
2021/02/18 Javascript
python实现在windows服务中新建进程的方法
2015/06/30 Python
解决django 新增加用户信息出现错误的问题
2019/07/28 Python
python通过链接抓取网站详解
2019/11/20 Python
python正则表达式的懒惰匹配和贪婪匹配说明
2020/07/13 Python
HTML5 解决苹果手机不能自动播放音乐问题
2017/12/27 HTML / CSS
高中军训感想300字
2014/03/04 职场文书
个人委托书
2014/07/31 职场文书
祖国在我心中演讲稿600字
2014/09/23 职场文书
党支部党的群众路线对照检查材料
2014/09/24 职场文书
党的群众路线教育实践活动心得体会(医院)
2014/11/03 职场文书
毕业实习感受与体会
2015/05/26 职场文书
工程款催款函
2015/06/24 职场文书
Vue Element-ui表单校验规则实现
2021/07/09 Vue.js