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 getsiteurl()函数
Sep 05 PHP
PHP的范围解析操作符(::)的含义分析说明
Jul 03 PHP
匹配csdn用户数据库与官方用户的重合度并将重叠部分的用户筛选出来
Dec 25 PHP
PHP实现ftp上传文件示例
Aug 21 PHP
使用array_map简单搞定PHP删除文件、删除目录
Oct 29 PHP
ecshop实现smtp发送邮件
Feb 03 PHP
PHP使用gmdate实现将一个UNIX 时间格式化成GMT文本的方法
Mar 19 PHP
利用PHPExcel读取Excel的数据和导出数据到Excel
May 12 PHP
PHP实现数组的笛卡尔积运算示例
Dec 15 PHP
PHP设计模式之委托模式定义与用法简单示例
Aug 13 PHP
实例分析PHP将字符串转换成数字的方法
Jan 27 PHP
解决Laravel 不能创建 migration 的问题
Oct 09 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中HTML标签过滤技巧
2014/01/07 PHP
配置php.ini实现PHP文件上传功能
2014/11/27 PHP
老生常谈PHP面向对象之标识映射
2017/06/21 PHP
PHP面向对象五大原则之依赖倒置原则(DIP)详解
2018/04/08 PHP
js遍历td tr等html元素
2012/12/13 Javascript
php跨域调用json的例子
2013/11/13 Javascript
jquery.ajax的url中传递中文乱码问题的解决方法
2014/02/07 Javascript
深入分析Javascript跨域问题
2015/04/17 Javascript
js实现的四级左侧网站分类菜单实例
2015/05/06 Javascript
JavaScript实现算术平方根算法-代码超简单
2015/09/11 Javascript
JavaScript中SetInterval与setTimeout的用法详解
2015/11/10 Javascript
JavaScript中将数组进行合并的基本方法讲解
2016/03/07 Javascript
最简单的tab切换实例代码
2016/05/13 Javascript
需要牢记的JavaScript基础知识
2016/09/25 Javascript
深入理解JavaScript中的预解析
2017/01/04 Javascript
vue实现一个移动端屏蔽滑动的遮罩层实例
2017/06/08 Javascript
基于vue.js路由参数的实例讲解——简单易懂
2017/09/07 Javascript
VUE长按事件需求详解
2017/10/18 Javascript
在vue中封装可复用的组件方法
2018/03/01 Javascript
vue全局使用axios的方法实例详解
2018/11/22 Javascript
小程序新版订阅消息模板消息
2019/12/31 Javascript
webpack proxy 使用(代理的使用)
2020/01/10 Javascript
解决python3 urllib 链接中有中文的问题
2018/07/16 Python
python读取dicom图像示例(SimpleITK和dicom包实现)
2020/01/16 Python
python代码实现猜拳小游戏
2020/11/30 Python
Alba Moda瑞士网上商店:独家意大利时尚女装销售
2016/11/28 全球购物
Banggood官网:面向全球客户的综合商城
2017/04/19 全球购物
VICHY薇姿英国官网:全球专业敏感肌护肤领先品牌
2017/07/04 全球购物
软件配置管理有什么好处
2015/04/15 面试题
小露珠教学反思
2014/04/30 职场文书
综治目标管理责任书
2015/05/11 职场文书
家长会主持词开场白
2015/05/29 职场文书
联谊会开场白
2015/06/01 职场文书
四风之害观后感
2015/06/09 职场文书
大学生军训心得体会5篇
2019/08/15 职场文书
一文带你理解vue创建一个后台管理系统流程(Vue+Element)
2021/05/18 Vue.js