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中的超全局变量
Oct 09 PHP
PHP 强制下载文件代码
Oct 24 PHP
应用开发中涉及到的css和php笔记分享
Aug 02 PHP
PHP __autoload()方法真的影响性能吗?
Mar 30 PHP
php Ubb代码编辑器函数代码
Jul 05 PHP
php结合ajax实现赞、顶、踩功能实例
May 12 PHP
php禁止某ip或ip地址段访问的方法
Feb 25 PHP
php使用simplexml_load_file加载XML文件并显示XML的方法
Mar 19 PHP
使用 PHPStorm 开发 Laravel
Mar 24 PHP
54个提高PHP程序运行效率的方法
Jul 19 PHP
两种php实现图片上传的方法
Jan 22 PHP
Smarty模板引擎缓存机制详解
May 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
shopex中集成的站长统计功能的代码简单分析
2011/08/11 PHP
初识PHP
2014/09/28 PHP
ThinkPHP实现动态包含文件的方法
2014/11/29 PHP
PHP+jquery+CSS制作头像登录窗(仿QQ登陆)
2016/10/20 PHP
jquery的$(document).ready()和onload的加载顺序
2010/05/26 Javascript
js对象之JS入门之Array对象操作小结
2011/01/09 Javascript
选择复选框按钮置灰否则按钮可用
2014/05/22 Javascript
javascript限制文本框输入值类型的方法
2015/05/07 Javascript
JS实现支持多选的遍历下拉列表代码
2015/08/20 Javascript
jQuery实现带幻灯的tab滑动切换风格菜单代码
2015/08/27 Javascript
Angular Js文件上传之form-data
2015/08/28 Javascript
基于JavaScript实现通用tab选项卡(通用性强)
2016/01/07 Javascript
JavaScript数据结构与算法之集合(Set)
2016/01/29 Javascript
vue2.0开发实践总结之疑难篇
2016/12/07 Javascript
jQuery Validate表单验证插件的基本使用方法及功能拓展
2017/01/04 Javascript
很棒的一组js图片轮播特效
2017/01/12 Javascript
AngularJs上传前预览图片的实例代码
2017/01/20 Javascript
Jquery实现跨域异步上传文件总结
2017/02/03 Javascript
AngularJS实现表单验证功能详解
2017/10/12 Javascript
微信小程序功能之全屏滚动效果的实现代码
2018/11/22 Javascript
Vue按时间段查询数据组件使用详解
2020/08/21 Javascript
Vue使用screenfull实现全屏效果
2020/09/17 Javascript
numpy中的高维数组转置实例
2018/04/17 Python
详解Django定时任务模块设计与实践
2019/07/24 Python
python KNN算法实现鸢尾花数据集分类
2019/10/24 Python
python 监测内存和cpu的使用率实例
2019/11/28 Python
python DES加密与解密及hex输出和bs64格式输出的实现代码
2020/04/13 Python
Pycharm中安装wordcloud等库失败问题及终端通过pip安装的Python库如何添加到Pycharm解释器中(推荐)
2020/05/10 Python
Python函数参数定义及传递方式解析
2020/06/10 Python
Python使用urlretrieve实现直接远程下载图片的示例代码
2020/08/17 Python
Pycharm Plugins加载失败问题解决方案
2020/11/28 Python
css3 border旋转时的动画应用
2016/01/22 HTML / CSS
ASOS比利时:英国线上零售商及自有品牌
2018/07/29 全球购物
美国专业消费电子及摄影器材网站:B&H Photo Video
2019/12/18 全球购物
房地产营销策划方案
2014/02/08 职场文书
三下乡活动心得体会
2016/01/23 职场文书