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 相关文章推荐
新安装的MySQL数据库需要注意的安全知识
Jul 30 PHP
php radio 单选框获取与保持值的实现代码
May 15 PHP
php !function_exists(&quot;T7FC56270E7A70FA81A5935B72EACBE29&quot;))代码解密
Jan 07 PHP
PHP5中Cookie与 Session使用详解
Apr 30 PHP
解析PHP中DIRECTORY_SEPARATOR,PATH_SEPARATOR两个常量的作用
Jun 21 PHP
php三元运算符知识汇总
Jul 02 PHP
Python中使用django form表单验证的方法
Jan 16 PHP
分享5个非常有用的Laravel Blade指令
May 30 PHP
php菜单/评论数据递归分级算法的实现方法
Aug 01 PHP
Yii框架连表查询操作示例
Sep 06 PHP
laravel 使用事件系统统计浏览量的实现
Oct 16 PHP
laravel框架数据库操作、查询构建器、Eloquent ORM操作实例分析
Dec 20 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:风雨欲来 路在何方?
2006/10/09 PHP
如何对PHP程序中的常见漏洞进行攻击(上)
2006/10/09 PHP
php下判断数组中是否存在相同的值array_unique
2008/03/25 PHP
调整优化您的LAMP应用程序的5种简单方法
2011/06/26 PHP
PHP中$_SERVER使用说明
2015/07/05 PHP
PHP四种排序算法实现及效率分析【冒泡排序,插入排序,选择排序和快速排序】
2018/04/27 PHP
PHP高并发和大流量解决方案整理
2019/12/24 PHP
33个优秀的 jQuery 图片展示插件分享
2012/03/14 Javascript
技术男用来对妹子表白的百度首页
2014/07/23 Javascript
三种取消选中单选框radio的方法
2014/09/09 Javascript
分享2个jQuery插件--jquery.fileupload与artdialog
2014/12/26 Javascript
jquery实现可自动判断位置的弹出层效果代码
2015/10/12 Javascript
javascript创建对象的3种方法
2016/11/02 Javascript
Kendo Grid editing 自定义验证报错提示的解决方法
2016/11/18 Javascript
BootStrap Table前台和后台分页对JSON格式的要求
2017/06/28 Javascript
让div运动起来 js实现缓动效果
2017/07/06 Javascript
详解让sublime text3支持Vue语法高亮显示的示例
2017/09/29 Javascript
jquery应用实例分享_实现手风琴特效
2018/02/01 jQuery
VUE中setTimeout和setInterval自动销毁案例
2020/09/07 Javascript
python读取oracle函数返回值
2016/07/18 Python
Python安装模块的常见问题及解决方法
2018/02/05 Python
python numpy 一维数组转变为多维数组的实例
2018/07/02 Python
python实现根据给定坐标点生成多边形mask的例子
2020/02/18 Python
Python操作dict时避免出现KeyError的几种解决方法
2020/09/20 Python
Python tempfile模块生成临时文件和临时目录
2020/09/30 Python
实例教程 利用html5和css3打造一款创意404页面
2014/10/20 HTML / CSS
一款利用html5和css3动画排列人物头像的实例演示
2014/12/05 HTML / CSS
竞职演讲稿范文
2014/01/11 职场文书
校园文化建设方案
2014/02/03 职场文书
2014年幼儿园安全工作总结
2014/11/10 职场文书
工作失误检讨书
2015/01/26 职场文书
展览会邀请函
2015/02/02 职场文书
2015年节能降耗工作总结
2015/05/22 职场文书
Go语言中的UTF-8实现
2021/04/26 Golang
SQL Server作业失败:无法确定所有者是否有服务器访问权限的解决方法
2021/06/30 SQL Server
Redis官方可视化工具RedisInsight安装使用教程
2022/04/19 Redis