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 相关文章推荐
搜索引擎技术核心揭密
Oct 09 PHP
杏林同学录(二)
Oct 09 PHP
php生成缩略图填充白边(等比缩略图方案)
Dec 25 PHP
Linux下创建nginx脚本-start、stop、reload…
Aug 03 PHP
PHP curl伪造IP地址和header信息代码实例
Apr 27 PHP
浅谈php+phpStorm+xdebug配置方法
Sep 17 PHP
详解PHP中的序列化、反序列化操作
Mar 21 PHP
PHP 7安装调试工具Xdebug扩展的方法教程
Jun 17 PHP
PHP结合Vue实现滚动底部加载效果
Dec 17 PHP
php从数据库中获取数据用ajax传送到前台的方法
Aug 20 PHP
使用Git实现Laravel项目的自动化部署
Nov 24 PHP
PHP实现简单日历类编写
Aug 28 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实现的百度搜索某地天气的小偷代码
2014/04/23 PHP
ThinkPHP入库出现两次反斜线转义及数据库类转义的解决方法
2014/11/04 PHP
PHP实现多级分类生成树的方法示例
2017/02/07 PHP
PHP读取Excel内的图片(phpspreadsheet和PHPExcel扩展库)
2019/11/19 PHP
求解开jscript.encode代码的asp函数
2007/02/28 Javascript
用js生产批量批处理执行命令
2008/07/28 Javascript
火狐4、谷歌12不支持Jquery Validator的解决方法分享
2011/06/20 Javascript
JavaScript初学者应注意的七个细节小结
2012/01/30 Javascript
java和javascript获取word文档的书签位置对比
2014/06/19 Javascript
jquery $(document).ready()和window.onload的区别浅析
2015/02/04 Javascript
javascript制作网页图片上实现下雨效果
2015/02/26 Javascript
jQuery聚合函数实例
2015/05/21 Javascript
jQuery实现的经典滑动门效果
2015/09/22 Javascript
页面get请求 中文参数方法乱码问题的快速解决方法
2016/05/31 Javascript
Bootstrap下拉菜单效果实例代码分享
2016/06/30 Javascript
JS重载实现方法分析
2016/12/16 Javascript
JavaScript中Hoisting详解 (变量提升与函数声明提升)
2017/08/18 Javascript
Node之简单的前后端交互(实例讲解)
2017/11/14 Javascript
为jquery的ajax请求添加超时timeout时间的操作方法
2018/09/04 jQuery
angularjs1.5 组件内用函数向外传值的实例
2018/09/30 Javascript
使用python检测手机QQ在线状态的脚本代码
2013/02/10 Python
列举Python中吸引人的一些特性
2015/04/09 Python
Python之Scrapy爬虫框架安装及简单使用详解
2017/12/22 Python
Python使用Scrapy保存控制台信息到文本解析
2017/12/27 Python
python爬虫之爬取百度音乐的实现方法
2019/08/24 Python
使用python的turtle绘画滑稽脸实例
2019/11/21 Python
使用css3制作动感导航条示例
2014/01/26 HTML / CSS
Html5上传图片 移动端、PC端通用代码
2016/06/08 HTML / CSS
canvas基础之图形验证码的示例
2018/01/02 HTML / CSS
货车司机岗位职责
2014/03/18 职场文书
求职者怎样写自荐信
2014/04/13 职场文书
庆祝国庆节演讲稿2014
2014/09/19 职场文书
群众路线教育实践活动心得体会(四风)
2014/11/03 职场文书
幼儿园食品安全责任书
2015/05/08 职场文书
2016预备党员培训心得体会
2016/01/08 职场文书
CSS实现背景图片全屏铺满自适应的3种方式
2022/07/07 HTML / CSS