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多用户读写文件冲突的解决办法
Nov 06 PHP
php实现mysql封装类示例
May 07 PHP
php读取mssql的ntext字段返回值为空的解决方法
Dec 30 PHP
php自定义错误处理用法实例
Mar 20 PHP
PHP使用递归生成文章树
Apr 21 PHP
php实现Mysql简易操作类
Oct 11 PHP
深入理解PHP中的count函数
May 31 PHP
PHP magento后台无法登录问题解决方法
Nov 24 PHP
在Mac OS下搭建LNMP开发环境的步骤详解
Mar 10 PHP
php实现微信原生支付(扫码支付)功能
May 30 PHP
PHP实现微信退款的方法示例
Mar 26 PHP
PHP的图像处理实例小结【文字水印、图片水印、压缩图像等】
Dec 20 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图片处理之使用imagecopyresampled函数实现图片缩放例子
2014/11/19 PHP
php 提交表单 关闭layer弹窗iframe的实例讲解
2018/08/20 PHP
PHP面向对象程序设计之多态性的应用示例
2018/12/19 PHP
关于Javascript 的 prototype问题。
2007/01/03 Javascript
Ext.MessageBox工具类简介
2009/12/10 Javascript
javascript中的继承实例代码
2011/04/27 Javascript
js汉字排序问题 支持中英文混排,兼容各浏览器,包括CHROME
2011/12/20 Javascript
如何使用jquery动态加载js,css文件实现代码
2013/04/03 Javascript
本人自用的global.js库源码分享
2015/02/28 Javascript
简介JavaScript中的getUTCFullYear()方法的使用
2015/06/10 Javascript
通用javascript代码判断版本号是否在版本范围之间
2015/11/29 Javascript
AngularJS控制器详解及示例代码
2016/08/16 Javascript
解析预加载显示图片艺术
2016/12/05 Javascript
codeMirror插件使用讲解
2017/01/16 Javascript
jQuery实现Table表格隔行变色及高亮显示当前选择行效果示例
2017/02/14 Javascript
ReactJs设置css样式的方法
2017/06/08 Javascript
微信小程序数据存储与取值详解
2018/01/30 Javascript
js作用域和作用域链及预解析
2019/04/11 Javascript
Vue项目打包压缩的实现(让页面更快响应)
2020/03/10 Javascript
nuxt.js添加环境变量,区分项目打包环境操作
2020/11/06 Javascript
Python创建模块及模块导入的方法
2015/05/27 Python
python学习之第三方包安装方法(两种方法)
2015/07/30 Python
Python中 Lambda表达式全面解析
2016/11/28 Python
Python对文件和目录进行操作的方法(file对象/os/os.path/shutil 模块)
2017/05/08 Python
详解python配置虚拟环境
2019/04/08 Python
Python项目 基于Scapy实现SYN泛洪攻击的方法
2019/07/23 Python
TensorFlow tensor的拼接实例
2020/01/19 Python
html5本地存储_动力节点Java学院整理
2017/07/12 HTML / CSS
Canvas 帧动画吃苹果小游戏
2020/08/05 HTML / CSS
兼职业务员岗位职责
2014/01/01 职场文书
保护环境标语
2014/06/09 职场文书
统招统分证明
2015/06/23 职场文书
环保证明
2015/06/23 职场文书
聘任通知书
2015/09/21 职场文书
python geopandas读取、创建shapefile文件的方法
2021/06/29 Python
Python制作一个随机抽奖小工具的实现
2021/07/07 Python