兼容性最强的PHP生成缩略图的函数代码(修改版)


Posted in PHP onJanuary 18, 2011
function ImageResize($srcFile,$toW,$toH,$toFile="") 
{ 
if($toFile==""){ $toFile = $srcFile; } 
$info = ""; 
$data = GetImageSize($srcFile,$info); 
switch ($data[2]) 
{ 
case 1: 
if(!function_exists("imagecreatefromgif")){ 
echo "你的GD库不能使用GIF格式的图片,请使用Jpeg或PNG格式!<a href='javascript:go(-1);'>返回</a>"; 
exit(); 
} 
$im = ImageCreateFromGIF($srcFile); 
break; 
case 2: 
if(!function_exists("imagecreatefromjpeg")){ 
echo "你的GD库不能使用jpeg格式的图片,请使用其它格式的图片!<a href='javascript:go(-1);'>返回</a>"; 
exit(); 
} 
$im = ImageCreateFromJpeg($srcFile); 
break; 
case 3: 
$im = ImageCreateFromPNG($srcFile); 
break; 
} 
$srcW=ImageSX($im); 
$srcH=ImageSY($im); 
$toWH=$toW/$toH; 
$srcWH=$srcW/$srcH; 
if($toWH<=$srcWH){ 
$ftoW=$toW; 
$ftoH=$ftoW*($srcH/$srcW); 
} 
else{ 
$ftoH=$toH; 
$ftoW=$ftoH*($srcW/$srcH); 
} 
if($srcW>$toW||$srcH>$toH) 
{ 
if(function_exists("imagecreatetruecolor")){ 
@$ni = ImageCreateTrueColor($ftoW,$ftoH); 
if($ni) ImageCopyResampled($ni,$im,0,0,0,0,$ftoW,$ftoH,$srcW,$srcH); 
else{ 
$ni=ImageCreate($ftoW,$ftoH); 
ImageCopyResized($ni,$im,0,0,0,0,$ftoW,$ftoH,$srcW,$srcH); 
} 
}else{ 
$ni=ImageCreate($ftoW,$ftoH); 
ImageCopyResized($ni,$im,0,0,0,0,$ftoW,$ftoH,$srcW,$srcH); 
} 
if(function_exists('imagejpeg')) ImageJpeg($ni,$toFile); 
else ImagePNG($ni,$toFile); 
ImageDestroy($ni); 
} 
ImageDestroy($im); 
}
PHP 相关文章推荐
php遍历目录viewDir函数
Dec 15 PHP
简单PHP上传图片、删除图片实现代码
May 12 PHP
PHP JS Ip地址及域名格式检测代码
Sep 27 PHP
php过滤XSS攻击的函数
Nov 12 PHP
PHP延迟静态绑定示例分享
Jun 22 PHP
ThinkPHP入库出现两次反斜线转义及数据库类转义的解决方法
Nov 04 PHP
php生成rss类用法实例
Apr 14 PHP
Zend Framework教程之Zend_Db_Table表关联实例详解
Mar 23 PHP
PHP树-不需要递归的实现方法
Jun 21 PHP
Ajax PHP JavaScript MySQL实现简易无刷新在线聊天室
Aug 17 PHP
thinkPHP5 ACL用户权限模块用法详解
May 10 PHP
PHP数组遍历的几种常见方式总结
Feb 15 PHP
discuz的php防止sql注入函数
Jan 17 #PHP
PHP统计目录下的文件总数及代码行数(去除注释及空行)
Jan 17 #PHP
php短域名转换为实际域名函数
Jan 17 #PHP
PHP学习笔记之三 数据库基本操作
Jan 17 #PHP
PHP学习笔记之二
Jan 17 #PHP
PHP学习笔记之一
Jan 17 #PHP
php下连接mssql2005的代码
Jan 17 #PHP
You might like
php 编写安全的代码时容易犯的错误小结
2010/05/20 PHP
php实现只保留mysql中最新1000条记录
2015/06/18 PHP
php获得刚插入数据的id 的几种方法总结
2018/05/31 PHP
PHP 实现重载
2021/03/09 PHP
用js模拟JQuery的show与hide动画函数代码
2010/09/20 Javascript
JavaScript学习笔记之获取当前目录的实现代码
2010/12/14 Javascript
仅IE6/7/8中innerHTML返回值忽略英文空格的问题
2011/04/07 Javascript
仅IE不支持setTimeout/setInterval函数的第三个以上参数
2011/05/25 Javascript
JS模拟面向对象全解(一、类型及传递)
2011/07/13 Javascript
利用javascript实现web页面中指定区域打印
2013/10/30 Javascript
Jquery之Bind方法参数传递与接收的三种方法
2014/06/24 Javascript
JQuery选中checkbox方法代码实例(全选、反选、全不选)
2015/04/27 Javascript
javascript工厂模式和构造函数模式创建对象方法解析
2016/12/30 Javascript
JavaScript操作文件_动力节点Java学院整理
2017/06/30 Javascript
vue全局组件与局部组件使用方法详解
2018/03/29 Javascript
微信小程序实现登录遮罩效果
2018/11/01 Javascript
关于ckeditor在bootstrap中modal中弹框无法输入的解决方法
2019/09/11 Javascript
微信小程序自定义头部导航栏(组件化)
2019/11/15 Javascript
vue-cli设置publicPath小记
2020/04/14 Javascript
python实现实时监控文件的方法
2016/08/26 Python
python使用插值法画出平滑曲线
2018/12/15 Python
Python计算不规则图形面积算法实现解析
2019/11/22 Python
基于python实现学生信息管理系统
2019/11/22 Python
详解Python IO编程
2020/07/24 Python
法国美发器材和产品购物网站:Beauty Coiffure
2016/12/05 全球购物
西班牙最大的婴儿用品网上商店:Bebitus
2019/05/30 全球购物
Java如何格式化日期
2012/08/07 面试题
上班离岗检讨书
2014/01/27 职场文书
端午节粽子促销活动方案
2014/02/02 职场文书
运动会解说词200字
2014/02/06 职场文书
食品安全宣传标语
2014/06/07 职场文书
12.4法制宣传日活动总结
2014/08/26 职场文书
2014会计年终工作总结
2014/12/20 职场文书
使用redis生成唯一编号及原理示例详解
2021/09/15 Redis
JavaScript实现简单拖拽效果
2021/09/15 Javascript
SQL Server内存机制浅探
2022/04/06 SQL Server