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

 更新时间:2011年01月18日 00:00:25   作者:  
写通用性程序考虑兼容性是很头痛的事情,关于用PHP生成缩略图的代码很多,不过能完全兼容gd1.6和gd2.x,并能保证缩图清晰性的代码几乎没有,我把我以前的代码改了一下,就能实现了。
复制代码 代码如下:

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);
}

相关文章

  • Discuz不使用插件实现简单的打赏功能

    Discuz不使用插件实现简单的打赏功能

    今天小编就为大家分享一篇关于Discuz不使用插件实现简单的打赏功能,小编觉得内容挺不错的,现在分享给大家,具有很好的参考价值,需要的朋友一起跟随小编来看看吧
    2019-03-03
  • PHP实现的Redis操作通用类示例

    PHP实现的Redis操作通用类示例

    这篇文章主要介绍了PHP实现的Redis操作通用类,结合实例形式分析了php实现的redis连接、队列、集合、hash表、事务等相关操作封装技巧,需要的朋友可以参考下
    2018-06-06
  • 解析PHP留言本模块主要功能的函数说明(代码可实现)

    解析PHP留言本模块主要功能的函数说明(代码可实现)

    本篇文章是对PHP留言本中主要的函数以及代码进行了详细的分析介绍,需要的朋友参考下
    2013-06-06
  • PHP在同一域名下两个不同的项目做独立登录机制详解

    PHP在同一域名下两个不同的项目做独立登录机制详解

    这篇文章主要给大家介绍了关于PHP在同一域名下两个不同的项目如何做独立登录机制的相关资料,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面来一起看看吧。
    2017-09-09
  • php遍历类中包含的所有元素的方法

    php遍历类中包含的所有元素的方法

    这篇文章主要介绍了php遍历类中包含的所有元素的方法,涉及php中getConstants方法及数组操作的相关技巧,需要的朋友可以参考下
    2015-05-05
  • php中opendir函数用法实例

    php中opendir函数用法实例

    这篇文章主要介绍了php中opendir函数用法,以实例形式详细讲述了opendir函数打开目录的用法及相关的注意事项,具有一定的参考借鉴价值,需要的朋友可以参考下
    2014-11-11
  • PHP如何实现防止重复提交

    PHP如何实现防止重复提交

    防抖(Debounce)是一种防止重复提交的策略,它通过延迟一定时间来合并连续的操作,以确保只执行一次,本文为大家整理了几种防抖的实现方法,希望对大家有所帮助
    2023-09-09
  • php 输出缓冲 Output Control用法实例详解

    php 输出缓冲 Output Control用法实例详解

    这篇文章主要介绍了php 输出缓冲 Output Control用法,结合实例形式详细分析了php 输出缓冲 Output Control基本概念、原理、使用方法及相关操作注意事项,需要的朋友可以参考下
    2020-03-03
  • PHP实现类似于C语言的文件读取及解析功能

    PHP实现类似于C语言的文件读取及解析功能

    这篇文章主要介绍了PHP实现类似于C语言的文件读取及解析功能,结合实例形式分析了php读取文件的相关函数与使用注意事项,需要的朋友可以参考下
    2017-09-09
  • PHP删除HTMl标签的实现代码

    PHP删除HTMl标签的实现代码

    本篇文章是对PHP删除HTMl标签的实现代码进行了详细的分析介绍,需要的朋友参考下
    2013-06-06

最新评论