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数据库转移,access,sql server 转 MySQL 的图文教程
Sep 02 PHP
解析php中curl_multi的应用
Jul 17 PHP
php四种基础算法代码实例
Oct 29 PHP
PHP针对常规模板引擎中与CSS/JSON冲突的解决方法
Aug 19 PHP
深入理解PHP中的Streams工具
Jul 03 PHP
今天你说520了吗?不仅有php表白书还有java表白神器
May 20 PHP
用PHP写的一个冒泡排序法的函数简单实例
May 26 PHP
php单例模式的简单实现方法
Jun 10 PHP
微信支付开发发货通知实例
Jul 12 PHP
php PDO属性设置与操作方法分析
Dec 27 PHP
确保Laravel网站不会被嵌入到其他站点中的方法
Oct 18 PHP
PHP调用QQ互联接口实现QQ登录网站功能示例
Oct 24 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 批量替换html标签的实例代码
2013/11/26 PHP
php中字符查找函数strpos、strrchr与strpbrk用法
2014/11/18 PHP
PHP生成随机密码4种方法及性能对比
2020/12/11 PHP
TNC vs RR BO3 第一场 2.14
2021/03/10 DOTA
用js得到网页中所有的div的id
2020/10/19 Javascript
在IE下获取object(ActiveX)的Param的代码
2009/09/15 Javascript
判断用户的在线状态 onbeforeunload事件
2011/03/05 Javascript
根据IP的地址,区分不同的地区,查看不同的网站页面的js代码
2013/02/26 Javascript
jQuery 写的简单打字游戏可以提示正确和错误的次数
2014/07/01 Javascript
详解iframe与frame的区别
2016/01/13 Javascript
JS实现的打字机效果完整实例
2016/06/20 Javascript
jQuery实现按比例缩放图片的方法
2017/04/29 jQuery
浅谈函数调用的不同方式,以及this的指向
2017/09/17 Javascript
JavaScript继承定义与用法实践分析
2018/05/28 Javascript
浅谈JS对象添加getter与setter的5种方法
2018/06/09 Javascript
JS数组Reduce方法功能与用法实例详解
2020/04/29 Javascript
vue如何使用外部特殊字体的操作
2020/07/30 Javascript
使用python调用浏览器并打开一个网址的例子
2014/06/05 Python
python基础之包的导入和__init__.py的介绍
2018/01/08 Python
Python批量生成幻影坦克图片实例代码
2019/06/04 Python
python绘制已知点的坐标的直线实例
2019/07/04 Python
基于python进行抽样分布描述及实践详解
2019/09/02 Python
Pytorch中实现只导入部分模型参数的方式
2020/01/02 Python
通过 Python 和 OpenCV 实现目标数量监控
2020/01/05 Python
Python字典深浅拷贝与循环方式方法详解
2020/02/09 Python
canvas基础之图形验证码的示例
2018/01/02 HTML / CSS
HTML5之SVG 2D入门12—SVG DOM及DOM操作介绍
2013/01/30 HTML / CSS
html5 canvas绘制矩形和圆形的实例代码
2016/06/16 HTML / CSS
白兰氏健康Mall:BRAND’S
2017/11/13 全球购物
计算机网络毕业生自荐信
2013/10/01 职场文书
上班离岗检讨书
2014/01/27 职场文书
安全教育月活动总结
2014/05/05 职场文书
2016七夕情人节感言
2015/12/09 职场文书
学校2016年圣诞节活动总结
2016/03/31 职场文书
话题作文之财富(600字)
2019/12/03 职场文书
《蓝鲸的眼睛》读后感5篇
2020/01/15 职场文书