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下使用strpos需要注意 === 运算符
Jul 17 PHP
mysql总结之explain
Feb 27 PHP
CI(CodeIgniter)框架介绍
Jun 09 PHP
使用PHP生成二维码的方法汇总
Jul 22 PHP
PHP的Yii框架入门使用教程
Feb 15 PHP
php面向对象值单例模式
May 03 PHP
php+MySQL实现登录时验证登录名和密码是否正确
May 10 PHP
Laravel使用memcached缓存对文章增删改查进行优化的方法
Oct 08 PHP
PHP中SQL查询语句的id=%d解释(推荐)
Dec 10 PHP
PHP实现的大文件切割与合并功能示例
Apr 10 PHP
PHP+RabbitMQ实现消息队列的完整代码
Mar 20 PHP
php7 错误处理机制修改实例分析
May 25 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日历[测试通过]
2008/03/27 PHP
一个PHP并发访问实例代码
2012/09/06 PHP
分享一个漂亮的php验证码类
2016/09/29 PHP
表单项的name命名为submit、reset引起的问题
2007/12/22 Javascript
详解new function(){}和function(){}() 区别分析
2008/03/22 Javascript
jQuery学习笔记(4)--Jquery中获取table中某列值的具体思路
2013/04/10 Javascript
html文本框提示效果的示例代码
2014/06/28 Javascript
Javascript基础教程之break和continue语句
2015/01/18 Javascript
JavaScript中的Math.LN2属性用法详解
2015/06/12 Javascript
javascript计时器编写过程与实现方法
2016/02/29 Javascript
15款最好的Bootstrap在线编辑器
2016/08/03 Javascript
ionic由于使用了header和subheader导致被遮挡的问题的两种解决方法
2016/09/22 Javascript
NODE.JS跨域问题的完美解决方案
2016/10/20 Javascript
jQuery插件WebUploader实现文件上传
2016/11/07 Javascript
jQuery实现获取隐藏div高度的方法示例
2017/02/09 Javascript
详解vue2 $watch要注意的问题
2017/09/08 Javascript
vue 属性拦截实现双向绑定的实例代码
2018/10/24 Javascript
一些可能会用到的Node.js面试题
2019/06/15 Javascript
vue.js实现简单的计算器功能
2020/02/22 Javascript
小程序富文本提取图片可放大缩小
2020/05/26 Javascript
JavaScript实现沿五角星形线摆动的小圆实例详解
2020/07/28 Javascript
python基础入门学习笔记(Python环境搭建)
2016/01/13 Python
Python 制作糗事百科爬虫实例
2016/09/22 Python
Python数据结构与算法之链表定义与用法实例详解【单链表、循环链表】
2017/09/28 Python
在python中利用KNN实现对iris进行分类的方法
2018/12/11 Python
python使用pipeline批量读写redis的方法
2019/02/18 Python
Under Armour瑞典官方网站:美国高端运动科技品牌
2018/11/21 全球购物
怎么处理XML的中文问题
2015/03/26 面试题
SQL面试题
2013/12/09 面试题
售后服务科岗位职责范文
2013/11/13 职场文书
学校消防安全制度
2014/01/30 职场文书
自查自纠整改报告
2014/11/06 职场文书
《富饶的西沙群岛》教学反思
2016/02/16 职场文书
PHP 技巧 * SVG 保存为图片(分享图生成)
2021/04/02 PHP
python内置模块之上下文管理contextlib
2022/06/14 Python
SpringBoot Http远程调用的方法
2022/08/14 Java/Android