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里的JS打印函数
Oct 09 PHP
php判断正常访问和外部访问的示例
Feb 10 PHP
PHP网页游戏学习之Xnova(ogame)源码解读(三)
Jun 23 PHP
php内嵌函数用法实例
Mar 20 PHP
两种php去除二维数组的重复项方法
Nov 04 PHP
PHP数组函数知识汇总
May 12 PHP
PHP 与 UTF-8 的最佳实践详细介绍
Jan 04 PHP
thinkphp自定义权限管理之名称判断方法
Apr 01 PHP
PHP开发之归档格式phar文件概念与用法详解【创建,使用,解包还原提取】
Nov 17 PHP
laravel ORM 只开启created_at的几种方法总结
Jan 29 PHP
php获取微信基础接口凭证Access_token
Aug 23 PHP
PHP常量define和const的区别详解
May 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
PHP遍历并打印指定目录下所有文件实例
2014/02/10 PHP
php的ajax简单实例
2014/02/27 PHP
php判断GIF图片是否为动画的方法
2020/09/04 PHP
php如何执行非缓冲查询API
2016/07/22 PHP
PHP实现防盗链的方法分析
2017/07/25 PHP
PHP+Ajax实现的检测用户名功能简单示例
2019/02/12 PHP
原生javascript获取元素样式属性值的方法
2010/12/25 Javascript
Javascript基础知识(三)BOM,DOM总结
2014/09/29 Javascript
Shell脚本实现Linux系统和进程资源监控
2015/03/05 Javascript
Vue.js每天必学之方法与事件处理器
2016/09/06 Javascript
node.js爬虫爬取拉勾网职位信息
2017/03/14 Javascript
利用JS实现简单的瀑布流加载图片效果
2017/04/22 Javascript
angular4实现tab栏切换的方法示例
2017/10/21 Javascript
解决IE11 vue +webpack 项目中数据更新后页面没有刷新的问题
2018/09/25 Javascript
ES6数组与对象的解构赋值详解
2019/06/14 Javascript
[02:25]DOTA2英雄基础教程 熊战士
2014/01/03 DOTA
Python脚本实现虾米网签到功能
2016/04/12 Python
Ubuntu安装Jupyter Notebook教程
2017/10/18 Python
python修改list中所有元素类型的三种方法
2018/04/09 Python
python 时间信息“2018-02-04 18:23:35“ 解析成字典形式的结果代码详解
2018/04/19 Python
Python面向对象程序设计构造函数和析构函数用法分析
2019/04/12 Python
苹果香港官方商城:Apple香港
2016/09/14 全球购物
英国奢侈品概念店:Base Blu
2019/05/16 全球购物
美国健康和保健平台:healtop
2020/07/02 全球购物
Python中pass语句的作用是什么
2016/06/01 面试题
教师岗位职责范本
2013/12/29 职场文书
实习单位接收函
2014/01/11 职场文书
买卖车协议书
2014/04/21 职场文书
青春演讲稿范文
2014/05/08 职场文书
副主任竞聘演讲稿
2014/08/18 职场文书
安全生产标语大全
2014/10/06 职场文书
我们的节日元宵节活动总结
2015/02/06 职场文书
道德与公民自我评价
2015/03/09 职场文书
特此通知格式
2015/04/27 职场文书
小学生读书笔记
2015/07/01 职场文书
导游词之香港-太平山顶
2019/10/18 职场文书