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 全角转半角实现代码
May 16 PHP
使用php+Ajax实现唯一校验实现代码[简单应用]
Nov 29 PHP
基于curl数据采集之单页面采集函数get_html的使用
Apr 28 PHP
PHP swfupload图片上传的实例代码
Sep 30 PHP
php不使用插件导出excel的简单方法
Mar 04 PHP
php 解压rar文件及zip文件的方法
May 05 PHP
php smarty truncate UTF8乱码问题解决办法
Jun 13 PHP
PHP QRCODE生成彩色二维码的方法
May 19 PHP
php实现的http请求封装示例
Nov 08 PHP
利用PHP实现一个简单的用户登记表示例
Apr 25 PHP
Laravel实现批量更新多条数据
Apr 06 PHP
ThinkPhP+Apache+PHPstorm整合框架流程图解
Nov 23 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的ob_start();控制您的浏览器cache!
2006/11/25 PHP
PHP 配置open_basedir 让各虚拟站点独立运行
2009/11/12 PHP
php生成xml简单实例代码
2009/12/16 PHP
php中将时间差转换为字符串提示的实现代码
2011/08/08 PHP
PHP执行SQL文件并将SQL文件导入到数据库
2015/09/17 PHP
BOOM vs RR BO5 第四场 2.14
2021/03/10 DOTA
JavaScript编程的10个实用小技巧
2014/04/18 Javascript
Jquery $.getJSON 在IE下的缓存问题解决方法
2014/10/10 Javascript
NodeJS制作爬虫全过程(续)
2014/12/22 NodeJs
在Javascript中处理数组之toSource()方法的使用
2015/06/09 Javascript
js判断日期时间有效性的方法
2015/10/24 Javascript
扩展Bootstrap Tooltip插件使其可交互的方法
2016/11/07 Javascript
JS实现颜色的10进制转化成rgba格式的方法
2017/09/04 Javascript
认识jQuery的Promise的具体使用方法
2017/10/10 jQuery
Puppeteer环境搭建的详细步骤
2018/09/21 Javascript
js for终止循环 跳出多层循环
2018/10/04 Javascript
JavaScript刷新页面的几种方法总结
2019/03/28 Javascript
[01:11]辉夜杯战队访谈宣传片—CDEC.Y
2015/12/26 DOTA
Python从list类型、range()序列简单认识类(class)【可迭代】
2019/05/31 Python
对python while循环和双重循环的实例详解
2019/08/23 Python
selenium+PhantomJS爬取豆瓣读书
2019/08/26 Python
Python读取YAML文件过程详解
2019/12/30 Python
pyinstaller打包单文件时--uac-admin选项不起作用怎么办
2020/04/15 Python
用canvas显示验证码的实现
2020/04/10 HTML / CSS
美国台面电器和厨具品牌:KitchenAid
2019/04/12 全球购物
在使用非全零作为空指针内部表达的机器上, NULL是如何定义
2014/11/09 面试题
什么是makefile? 如何编写makefile?
2013/01/02 面试题
汉语言文学毕业生求职信
2013/10/01 职场文书
私营公司诉讼代理委托书范本
2014/09/13 职场文书
2014年药剂科工作总结
2014/11/26 职场文书
2014五年级班主任工作总结
2014/12/05 职场文书
出国留学单位推荐信
2015/03/26 职场文书
社区法制宣传月活动总结
2015/05/07 职场文书
大学生创业计划书
2019/06/24 职场文书
Python if else条件语句形式详解
2022/03/24 Python
Flutter Navigator 实现路由传递参数
2022/04/22 Java/Android