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创建多级目录代码
Jun 05 PHP
PHP中常用数组处理方法实例分析
Aug 30 PHP
POSIX 风格和兼容 Perl 风格两种正则表达式主要函数的类比(preg_match, preg_replace, ereg, ereg_replace)
Oct 12 PHP
Admin generator, filters and I18n
Oct 06 PHP
PHP数组传递是值传递而非引用传递概念纠正
Jan 31 PHP
php获取目标函数执行时间示例
Mar 04 PHP
PHP 二维数组根据某个字段排序的具体实现
Jun 03 PHP
ThinkPHP模型详解
Jul 27 PHP
PHP微信红包API接口
Dec 05 PHP
PHP实现超简单的SSL加密解密、验证及签名的方法示例
Aug 28 PHP
PHP切割整数工具类似微信红包金额分配的思路详解
Sep 18 PHP
php传值和传引用的区别点总结
Nov 19 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 printf输出格式使用说明
2010/12/05 PHP
PHP 事件机制(2)
2011/03/23 PHP
PHP代码网站如何防范SQL注入漏洞攻击建议分享
2012/03/01 PHP
PHP合并数组+号和array_merge的区别
2015/06/25 PHP
PHP Oauth授权和本地加密实现方法
2016/08/12 PHP
js获取TreeView控件选中节点的Text和Value值的方法
2012/11/24 Javascript
javascript图像处理—仿射变换深度理解
2013/01/16 Javascript
Jquery 模板数据绑定插件的使用方法详解
2013/07/08 Javascript
基于jquery的9行js轻松实现tab控件示例
2013/10/12 Javascript
node.js中的fs.readlinkSync方法使用说明
2014/12/17 Javascript
JS显示下拉列表框内全部元素的方法
2015/03/31 Javascript
jQuery简单实现QQ空间点赞已经取消点赞
2015/04/02 Javascript
jQuery实现的给图片点赞+1动画效果(附在线演示及demo源码下载)
2015/12/31 Javascript
极易被忽视的javascript面试题七问七答
2016/02/15 Javascript
动态加载JavaScript文件的两种方法
2016/04/22 Javascript
Bootstrap零基础入门教程(三)
2016/07/18 Javascript
基于jQuery实现的单行公告活动轮播效果
2017/08/23 jQuery
jquery的 filter()方法使用教程
2018/03/22 jQuery
Vue实现push数组并删除的例子
2019/11/01 Javascript
Python中的lstrip()方法使用简介
2015/05/19 Python
Python线程详解
2015/06/24 Python
django批量导入xml数据
2016/10/16 Python
Windows系统下多版本pip的共存问题详解
2017/10/10 Python
Python中xrange与yield的用法实例分析
2017/12/26 Python
Tensorflow的可视化工具Tensorboard的初步使用详解
2018/02/11 Python
python递归实现快速排序
2018/08/18 Python
Python 移动光标位置的方法
2019/01/20 Python
使用Python自动生成HTML的方法示例
2019/08/06 Python
Python数据可视化实现正态分布(高斯分布)
2019/08/21 Python
python抓取多种类型的页面方法实例
2019/11/20 Python
python爬虫模拟浏览器的两种方法实例分析
2019/12/09 Python
使用 Python 处理3万多条数据只要几秒钟
2020/01/19 Python
Python之多进程与多线程的使用
2021/02/23 Python
英国最大的邮寄种子和植物公司:Thompson & Morgan
2017/09/21 全球购物
全球性的奢侈品梦工厂:Forzieri(福喜利)
2019/02/20 全球购物
2014年教师政治学习材料
2014/06/02 职场文书