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 相关文章推荐
删除无限级目录与文件代码共享
Jul 12 PHP
用php来检测proxy
Oct 09 PHP
用PHP的ob_start();控制您的浏览器cache!
Nov 25 PHP
PHP中file_exists与is_file,is_dir的区别介绍
Sep 12 PHP
php中实现用数组妩媚地生成要执行的sql语句
Jul 10 PHP
详解PHP的Yii框架中日志的相关配置及使用
Dec 08 PHP
PHP正则获取页面所有图片地址
Mar 23 PHP
一段实用的php验证码函数
May 19 PHP
linux平台编译安装PHP7并安装Redis扩展与Swoole扩展实例教程
Sep 30 PHP
PHP实现mysqli批量执行多条语句的方法示例
Jul 22 PHP
yii2.0整合阿里云oss删除单个文件的方法
Sep 19 PHP
laravel框架中视图的基本使用方法分析
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+mysql扎实个人基本功
2008/03/27 PHP
rephactor 优秀的PHP的重构工具
2011/06/09 PHP
PHP处理Json字符串解码返回NULL的解决方法
2014/09/01 PHP
Zend Framework数据库操作方法实例总结
2016/12/11 PHP
PHP针对伪静态的注入总结【附asp与Python相关代码】
2017/08/01 PHP
一个js导致的jquery失效问题的解决方法
2013/11/27 Javascript
使用JavaScript实现连续滚动字幕效果的方法
2015/07/07 Javascript
使用jquery提交form表单并自定义action的实现代码
2016/05/25 Javascript
jQuery实现图片轮播效果代码(基于jquery.pack.js插件)
2016/06/02 Javascript
AngularJS表单基本操作
2017/01/09 Javascript
form表单序列化详解(推荐)
2017/08/15 Javascript
Vue 滚动行为的具体使用方法
2017/09/13 Javascript
原生JS写Ajax的请求函数功能
2017/12/22 Javascript
ionic3实战教程之随机布局瀑布流的实现方法
2017/12/28 Javascript
jQuery选择器之基本选择器用法实例分析
2019/02/19 jQuery
javascript+Canvas实现画板功能
2020/06/23 Javascript
js实现右键弹出自定义菜单
2020/09/08 Javascript
js实现验证码干扰(动态)
2021/02/23 Javascript
python二叉树遍历的实现方法
2013/11/21 Python
Python类的专用方法实例分析
2015/01/09 Python
Python两个整数相除得到浮点数值的方法
2015/03/18 Python
python编程开发之textwrap文本样式处理技巧
2015/11/13 Python
python简易远程控制单线程版
2018/06/20 Python
python绘制双Y轴折线图以及单Y轴双变量柱状图的实例
2019/07/08 Python
python 字符串常用函数详解
2019/09/11 Python
Python DES加密实现原理及实例解析
2020/07/17 Python
Python爬虫使用bs4方法实现数据解析
2020/08/25 Python
Linux系统下升级pip的完整步骤
2021/01/31 Python
CSS3让登陆面板3D旋转起来
2016/05/03 HTML / CSS
JoJo Maman Bébé爱尔兰官网:英国最受欢迎的精品母婴品牌
2020/12/20 全球购物
建筑工程专业学生的自我评价
2013/12/25 职场文书
十佳教师事迹材料
2014/01/11 职场文书
文明倡议书范文
2014/04/15 职场文书
逃课打麻将检讨书
2014/10/05 职场文书
公安纪律作风整顿剖析材料
2014/10/10 职场文书
Oracle 多表查询基本语法实例
2022/04/18 Oracle