兼容性比较好的PHP生成缩略图的代码


Posted in PHP onJanuary 12, 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 数组的创建、调用和更新实现代码
Mar 09 PHP
php 函数使用方法与函数定义方法
May 09 PHP
php中使用parse_url()对网址进行解析的实现代码(parse_url详解)
Jan 03 PHP
解析在zend Farmework下如何创立一个FORM表单
Jun 28 PHP
从零开始学YII2框架(四)扩展插件yii2-kartikgii
Aug 20 PHP
PHP如何将log信息写入服务器中的log文件
Jul 29 PHP
程序员的表白神器“520”大声喊出来
May 20 PHP
php中二分法查找算法实例分析
Sep 22 PHP
php脚本守护进程原理与实现方法详解
Jul 20 PHP
php中通用的excel导出方法实例
Dec 30 PHP
Yii框架日志操作图文与实例详解
Sep 09 PHP
laravel 出现command not found问题的解决方案
Oct 23 PHP
php的日期处理函数及uchome的function_coomon中日期处理函数的研究
Jan 12 #PHP
PHP日期处理函数 整型日期格式
Jan 12 #PHP
Base64在线编码解码实现代码 演示与下载
Jan 08 #PHP
DEDE采集大师官方留后门的删除办法
Jan 08 #PHP
php !function_exists(&quot;T7FC56270E7A70FA81A5935B72EACBE29&quot;))代码解密
Jan 07 #PHP
PHP备份/还原MySQL数据库的代码
Jan 06 #PHP
php循环检测目录是否存在并创建(循环创建目录)
Jan 06 #PHP
You might like
php 日期和时间的处理-郑阿奇(续)
2011/07/04 PHP
奇怪的PHP引用效率问题分析
2012/03/23 PHP
关于PHP堆栈与列队的学习
2013/06/21 PHP
PHP统计目录大小的自定义函数分享
2014/11/18 PHP
php is_executable判断给定文件名是否可执行实例
2016/09/26 PHP
Yii2框架实现数据库常用操作总结
2017/02/08 PHP
解决php用mysql方式连接数据库出现Deprecated报错问题
2019/12/25 PHP
php 多进程编程父进程的阻塞与非阻塞实例分析
2020/02/22 PHP
利用JS判断用户是否上网(连接网络)
2013/12/23 Javascript
JS动态插入并立即执行回调函数的方法
2016/04/21 Javascript
javascript实现任务栏消息提示的简单实例
2016/05/31 Javascript
JS作用域深度解析
2016/12/29 Javascript
微信小程序实现实时圆形进度条的方法示例
2017/02/24 Javascript
JS jQuery使用正则表达式去空字符的简单实现代码
2017/05/20 jQuery
vue实现简单的星级评分组件源码
2018/11/16 Javascript
JavaScript碎片—函数闭包(模拟面向对象)
2019/03/13 Javascript
vue 解决uglifyjs-webpack-plugin打包出现报错的问题
2020/08/04 Javascript
[01:09]2014DOTA2国际邀请赛 TI4西雅图DOTA2 中国美女coser加油助威
2014/07/20 DOTA
Python使用ntplib库同步校准当地时间的方法
2016/07/02 Python
Python学习小技巧之利用字典的默认行为
2017/05/20 Python
Django框架序列化与反序列化操作详解
2019/11/01 Python
python3.4中清屏的处理方法
2020/07/06 Python
什么是CSS3 HSLA色彩模式?HSLA模拟渐变色条
2016/04/26 HTML / CSS
Infababy英国:婴儿推车、Travel System婴儿车和婴儿汽车座椅销售
2018/05/23 全球购物
Talbots官网:美国成熟女装品牌
2019/11/15 全球购物
我有一个char * 型指针正巧指向一些int 型变量, 我想跳过它们。 为什么如下的代码((int *)p)++; 不行?
2013/05/09 面试题
个人找工作的自我评价
2013/10/17 职场文书
优秀毕业生求职信范文
2014/01/02 职场文书
政府门卫岗位职责
2014/04/29 职场文书
平安建设工作方案
2014/06/02 职场文书
毕业大学生自荐信
2014/06/17 职场文书
户籍证明格式
2014/09/15 职场文书
付款证明格式范文
2015/06/19 职场文书
幼儿园语言教学反思
2016/02/23 职场文书
什么是创业计划书?什么是商业计划书?这里一一解答
2019/07/12 职场文书
Java由浅入深通关抽象类与接口(上篇)
2022/04/26 Java/Android