PHP用GD库生成高质量的缩略图片


Posted in PHP onMarch 09, 2011

以下是PHP源代码(ResizeImage.php)。

<?php 
$FILENAME="image.thumb"; 
// 生成图片的宽度 
$RESIZEWIDTH=400; 
// 生成图片的高度 
$RESIZEHEIGHT=400; function ResizeImage($im,$maxwidth,$maxheight,$name){ 
$width = imagesx($im); 
$height = imagesy($im); 
if(($maxwidth && $width > $maxwidth) || ($maxheight && $height > $maxheight)){ 
if($maxwidth && $width > $maxwidth){ 
$widthratio = $maxwidth/$width; 
$RESIZEWIDTH=true; 
} 
if($maxheight && $height > $maxheight){ 
$heightratio = $maxheight/$height; 
$RESIZEHEIGHT=true; 
} 
if($RESIZEWIDTH && $RESIZEHEIGHT){ 
if($widthratio < $heightratio){ 
$ratio = $widthratio; 
}else{ 
$ratio = $heightratio; 
} 
}elseif($RESIZEWIDTH){ 
$ratio = $widthratio; 
}elseif($RESIZEHEIGHT){ 
$ratio = $heightratio; 
} 
$newwidth = $width * $ratio; 
$newheight = $height * $ratio; 
if(function_exists("imagecopyresampled")){ 
$newim = imagecreatetruecolor($newwidth, $newheight); 
imagecopyresampled($newim, $im, 0, 0, 0, 0, $newwidth, $newheight, $width, $height); 
}else{ 
$newim = imagecreate($newwidth, $newheight); 
imagecopyresized($newim, $im, 0, 0, 0, 0, $newwidth, $newheight, $width, $height); 
} 
ImageJpeg ($newim,$name . ".jpg"); 
ImageDestroy ($newim); 
}else{ 
ImageJpeg ($im,$name . ".jpg"); 
} 
} 
if($_FILES['image']['size']){ 
if($_FILES['image']['type'] == "image/pjpeg"){ 
$im = imagecreatefromjpeg($_FILES['image']['tmp_name']); 
}elseif($_FILES['image']['type'] == "image/x-png"){ 
$im = imagecreatefrompng($_FILES['image']['tmp_name']); 
}elseif($_FILES['image']['type'] == "image/gif"){ 
$im = imagecreatefromgif($_FILES['image']['tmp_name']); 
} 
if($im){ 
if(file_exists("$FILENAME.jpg")){ 
unlink("$FILENAME.jpg"); 
} 
ResizeImage($im,$RESIZEWIDTH,$RESIZEHEIGHT,$FILENAME); 
ImageDestroy ($im); 
} 
} 
?>

以下是测试代码(demo.php)
<?php 
include('ResizeImage.php'); 
if(!empty($_POST)){ 
echo($FILENAME.".jpg?cache=".rand(0,999999)); 
} 
?> 
<form name="test" action="?submit=true" enctype="multipart/form-data" method="post" > 
<input type="file" name="image" size="50" value="浏览"><p> 
<input type="submit" value="上传图片"> 
</form>
PHP 相关文章推荐
PHP执行linux系统命令的常用函数使用说明
Apr 27 PHP
php 判断访客是否为搜索引擎蜘蛛的函数代码
Jul 29 PHP
优化PHP代码技巧的小结
Jun 02 PHP
PHP延迟静态绑定示例分享
Jun 22 PHP
Windows下的PHP 5.3.x安装 Zend Guard Loader教程
Sep 06 PHP
微信公众平台之快递查询功能用法实例
Apr 14 PHP
PHP制作用户注册系统
Oct 23 PHP
PHP使用SOAP扩展实现WebService的方法
Apr 01 PHP
PHP环境搭建的详细步骤
Jun 30 PHP
php封装的验证码类分享
Feb 26 PHP
PHP实现将几张照片拼接到一起的合成图片功能【便于整体打印输出】
Nov 14 PHP
PHP编程一定要改掉的5个不良习惯
Sep 18 PHP
php GeoIP的使用教程
Mar 09 #PHP
让PHP COOKIE立即生效,不用刷新就可以使用
Mar 09 #PHP
通过JavaScript或PHP检测Android设备的代码
Mar 09 #PHP
PHP中uploaded_files函数使用方法详解
Mar 09 #PHP
PHP $_FILES函数详解
Mar 09 #PHP
PHP中for与foreach的区别分析
Mar 09 #PHP
php模板中出现空行解决方法
Mar 08 #PHP
You might like
Codeigniter(CI)框架分页函数及相关知识
2014/11/03 PHP
javascript 触发事件列表 比较不错
2009/09/03 Javascript
jquery 跨域访问问题解决方法(笔记)
2011/06/08 Javascript
js onload事件不起作用示例分析
2013/10/09 Javascript
javascript调试之DOM断点调试法使用技巧分享
2014/04/15 Javascript
jquery.hotkeys监听键盘按下事件keydown插件
2014/05/11 Javascript
node.js中的fs.realpath方法使用说明
2014/12/16 Javascript
JavaScript常用基础知识强化学习
2015/12/09 Javascript
JS实现简单的二维矩阵乘积运算
2016/01/26 Javascript
一览画面点击复选框后获取多个id值的方法
2016/05/30 Javascript
jQuery中的一些常见方法小结(推荐)
2016/06/13 Javascript
Jquery调用iframe父页面中的元素及方法
2016/08/23 Javascript
vue子组件使用自定义事件向父组件传递数据
2017/05/27 Javascript
js判断用户是输入的地址请求的路径(实例讲解)
2017/07/18 Javascript
vue+iview 兼容IE11浏览器的实现方法
2019/01/07 Javascript
vue基础之data存储数据及v-for循环用法示例
2019/03/08 Javascript
Vue项目路由刷新的实现代码
2019/04/17 Javascript
[57:12]完美世界DOTA2联赛循环赛 Inki vs Matador BO2第一场 10.31
2020/11/02 DOTA
windows及linux环境下永久修改pip镜像源的方法
2016/11/28 Python
Python Requests模拟登录实现图书馆座位自动预约
2018/04/27 Python
Python偏函数Partial function使用方法实例详解
2020/06/17 Python
Python私有属性私有方法应用实例解析
2020/09/15 Python
德国家具折扣店:POCO
2020/02/28 全球购物
财务会计专业个人求职信范本
2014/01/08 职场文书
高二生物教学反思
2014/01/27 职场文书
大学生秋游活动方案
2014/02/17 职场文书
环保倡议书500字
2014/05/15 职场文书
新闻编辑求职信
2014/07/13 职场文书
二年级语文上册复习计划
2015/01/19 职场文书
长城导游词400字
2015/01/30 职场文书
爱晚亭导游词
2015/02/09 职场文书
2015年安全工作总结范文
2015/04/02 职场文书
退税申请报告怎么写
2015/05/18 职场文书
2019年最新七夕唯美祝福语(60条)
2019/07/22 职场文书
2019脱贫攻坚工作总结报告范本!
2019/08/06 职场文书
Python数据类型最全知识总结
2021/05/31 Python