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
PHPnow安装服务[apache_pn]失败的问题的解决方法
Sep 10 PHP
PHP学习之正则表达式
Apr 17 PHP
介绍一些PHP判断变量的函数
Apr 24 PHP
ThinkPHP中的create方法与自动令牌验证实例教程
Aug 22 PHP
PHP中执行cmd命令的方法
Oct 11 PHP
WordPress中用于更新伪静态规则的PHP代码实例讲解
Dec 18 PHP
php常用字符函数实例小结
Dec 29 PHP
PHP实现权限管理功能示例
Sep 22 PHP
LaravelS通过Swoole加速Laravel/Lumen详解
Mar 02 PHP
php中青蛙跳台阶的问题解决方法
Oct 14 PHP
PHP正则表达式笔记与实例详解
May 09 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
ThinkPHP的常用配置选项汇总
2016/03/24 PHP
PHP精确计算功能示例
2016/11/29 PHP
Linux下快速搭建php开发环境
2017/03/13 PHP
PHP7 mongoDB扩展使用的方法分享
2019/05/02 PHP
Javascript 变量作用域 两个可能会被忽略的小特性
2010/03/23 Javascript
JQuery弹出炫丽对话框的同时让背景变灰色
2014/05/22 Javascript
JavaScript中getUTCSeconds()方法的使用详解
2015/06/11 Javascript
浅谈javascript原型链与继承
2015/07/13 Javascript
JS+CSS实现的简单折叠展开多级菜单效果
2015/09/12 Javascript
mvvm双向绑定机制的原理和实现代码(推荐)
2016/06/07 Javascript
详解Node.js如何开发命令行工具
2016/08/14 Javascript
webpack构建的详细流程探底
2018/01/08 Javascript
基于Node.js搭建hexo博客过程详解
2019/06/25 Javascript
vue之组件内监控$store中定义变量的变化详解
2019/11/08 Javascript
vuecli3.x中轻松4步带你使用tinymce的步骤
2020/06/25 Javascript
js实现限定范围拖拽的示例
2020/10/26 Javascript
[02:44]DOTA2英雄基础教程 钢背兽
2013/12/19 DOTA
Python检测字符串中是否包含某字符集合中的字符
2015/05/21 Python
python套接字流重定向实例汇总
2016/03/03 Python
python结合selenium获取XX省交通违章数据的实现思路及代码
2016/06/26 Python
对pycharm代码整体左移和右移缩进快捷键的介绍
2018/07/16 Python
python 从文件夹抽取图片另存的方法
2018/12/04 Python
python跳出双层for循环的解决方法
2019/06/24 Python
python实现基于朴素贝叶斯的垃圾分类算法
2019/07/09 Python
解决python 读取excel时 日期变成数字并加.0的问题
2019/10/08 Python
pytorch对梯度进行可视化进行梯度检查教程
2020/02/04 Python
python使用梯度下降和牛顿法寻找Rosenbrock函数最小值实例
2020/04/02 Python
Python自动化办公Excel模块openpyxl原理及用法解析
2020/11/05 Python
保护环境倡议书300字
2014/05/19 职场文书
节能标语大全
2014/06/21 职场文书
反洗钱宣传活动总结
2014/08/26 职场文书
干部竞争上岗演讲稿
2014/09/11 职场文书
群众路线教育实践活动批评与自我批评
2014/09/15 职场文书
环保主题班会教案
2015/08/13 职场文书
2019企业给员工的慰问信
2019/06/24 职场文书
Vue Element UI自定义描述列表组件
2021/05/18 Vue.js