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 执行系统命令的方法
Jul 07 PHP
PHP新手入门学习方法
May 08 PHP
PHP获取MSN好友列表类的实现代码
Jun 23 PHP
解析关于java,php以及html的所有文件编码与乱码的处理方法汇总
Jun 24 PHP
dedecms集成财付通支付接口
Dec 28 PHP
php定义一个参数带有默认值的函数实例分析
Mar 16 PHP
在Linux系统下一键重新安装WordPress的脚本示例
Jun 30 PHP
php生成静态html页面的方法(2种方法)
Sep 14 PHP
Yii使用Captcha验证码的方法
Dec 28 PHP
Symfony控制层深入详解
Mar 17 PHP
Laravel实现短信注册的示例代码
May 29 PHP
php装饰者模式简单应用案例分析
Oct 23 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 flv视频时间获取函数
2010/06/29 PHP
PHP实现的浏览器检查类
2016/04/11 PHP
PHP中快速生成随机密码的几种方式
2017/04/17 PHP
PHP实现的数独求解问题示例
2017/04/18 PHP
Yii2.0实现生成二维码功能实例
2017/10/24 PHP
javascript 关闭IE6、IE7
2009/06/01 Javascript
Jquery 模拟用户点击超链接或者按钮的方法
2013/10/25 Javascript
jQuery实现“扫码阅读”功能
2015/01/21 Javascript
jQuery经过一段时间自动隐藏指定元素的方法
2015/03/17 Javascript
深入学习jQuery Validate表单验证
2016/01/18 Javascript
Javascript实现图片轮播效果(二)图片序列节点的控制实现
2016/02/17 Javascript
JS 对java返回的json格式的数据处理方法
2016/12/05 Javascript
使用openSpeDiv方法实现Ecshop登录弹窗框效果
2017/03/13 Javascript
nodejs创建简易web服务器与文件读写的实例
2017/09/07 NodeJs
Vue.js与 ASP.NET Core 服务端渲染功能整合
2017/11/16 Javascript
vue中如何使用ztree
2018/02/06 Javascript
从零开始用electron手撸一个截屏工具的示例代码
2018/10/10 Javascript
JavaScript 防盗链的原理以及破解方法
2020/12/29 Javascript
[01:02:18]VGJ.S vs infamous Supermajor 败者组 BO3 第一场 6.4
2018/06/05 DOTA
[52:06]FNATIC vs NIP 2019国际邀请赛小组赛 BO2 第二场 8.16
2019/08/19 DOTA
python设置windows桌面壁纸的实现代码
2013/01/28 Python
python读写文件操作示例程序
2013/12/02 Python
在Django的视图(View)外使用Session的方法
2015/07/23 Python
python中通过预先编译正则表达式提高效率
2017/09/25 Python
Python最小二乘法矩阵
2019/01/02 Python
Python 3.8正式发布重要新功能一览
2019/10/17 Python
python3 tkinter实现添加图片和文本
2019/11/26 Python
python 多进程队列数据处理详解
2019/12/23 Python
Python定义函数实现累计求和操作
2020/05/03 Python
Python实现自动签到脚本的示例代码
2020/08/19 Python
详解Python GUI编程之PyQt5入门到实战
2020/12/10 Python
英国现代市场:ARKET
2019/04/10 全球购物
打架检讨书800字
2014/01/10 职场文书
竞选体育委员演讲稿
2014/04/26 职场文书
2015年大学辅导员工作总结
2015/05/12 职场文书
2016年优秀团支部事迹材料
2016/02/26 职场文书