php下用GD生成生成缩略图的两个选择和区别


Posted in PHP onApril 17, 2007

PHP的GD扩展提供了两个函数来缩放图像:

ImageCopyResized(dest, src, dx, dy, sx, sy, dw, dh, sw, sh);
ImageCopyResampled(dest, src, dx, dy, sx, sy, dw, dh, sw, sh);

ImageCopyResized( )函数在所有GD版本中有效,但其缩放图像的算法比较粗糙,可能会导致图像边缘的锯齿。GD 2.x中新增了一个ImageCopyResampled( )函数,其像素插值算法得到的图像边缘比较平滑(但该函数的速度比ImageCopyResized()慢)。

来看一个例子,我们将这个图缩小四倍:
<?php

 $src 

ImageCreateFromJPEG('php.jpg');

 

$width ImageSx($src);
 
$height ImageSy($src);
 
$x $width/2$y $height/2;
 
$dst ImageCreateTrueColor($x,$y);
 
ImageCopyResized($dst,$src,0,0,0,0,$x,$y,$width,$height);
 
//ImageCopyResampled($dst,$src,0,0,0,0,$x,$y,$width,$height);

 

header('Content-Type: image/jpeg');
 
ImageJPEG($dst,'',100);
?>

原图:
php下用GD生成生成缩略图的两个选择和区别

使用

ImageCopyResized()函数生成的结果:
php下用GD生成生成缩略图的两个选择和区别

使用ImageCopyResampled()函数生成的结果:

php下用GD生成生成缩略图的两个选择和区别

很明显可以看到两个函数生成的图像效果是不一样的,ImageCopyResampled()函数生成的结果比较平滑,效果较好。

顺便贴一个效果,用ASCII表示图像。ImageColorAt()有一个很有趣的用处,它可以循环检查
图像中的每一个像素的颜色,然后对该颜色数据进行操作。
源代码:
<html>
<body bgcolor="#000000" style="line-height:6pt"> <?php 
 $im = imagecreatefromjpeg('test1.jpg'); 
 $dx = imagesx($im); 
 $dy = imagesy($im); 
 for($y = 0; $y < $dy; $y++) { 
     for($x=0; $x < $dx; $x++) { 
         $col = imagecolorat($im, $x, $y); 
         $rgb = imagecolorsforindex($im,$col); 
         printf('<font color=#%02x%02x%02x>*</font>', 
                 $rgb['red'],$rgb['green'],$rgb['blue']); 
     } 
     echo "<br>\n"; 
 } 
 imagedestroy($im); 
?> 
</body></html>

php下用GD生成生成缩略图的两个选择和区别

很有趣吧,呵呵..

PHP 相关文章推荐
PHP 中的类
Oct 09 PHP
第八节--访问方式
Nov 16 PHP
加速XP搜索功能堪比vista
Mar 22 PHP
PHP数组无限分级数据的层级化处理代码
Dec 29 PHP
基于PHP CURL获取邮箱地址的详解
Jun 03 PHP
PHP实现视频文件上传完整实例
Aug 28 PHP
PHP中exec与system用法区别分析
Sep 22 PHP
PHP实现的线索二叉树及二叉树遍历方法详解
Apr 25 PHP
[原创]PHPCMS遭遇会员投稿审核无效的解决方法
Jan 11 PHP
[原创]php token使用与验证示例【测试可用】
Aug 30 PHP
php生成毫秒时间戳的实例讲解
Sep 22 PHP
PHP基于ip2long实现IP转换整形
Dec 11 PHP
15种PHP Encoder的比较
Apr 17 #PHP
dede全站URL静态化改造[070414更正]
Apr 17 #PHP
安装PHP可能遇到的问题“无法载入mysql扩展” 的解决方法
Apr 16 #PHP
给apache2.2加上mod_encoding模块後 php5.2.0 处理url出现bug
Apr 12 #PHP
Linux下ZendOptimizer的安装与配置方法
Apr 12 #PHP
PHP 中英文混合排版中处理字符串常用的函数
Apr 12 #PHP
PHP字符转义相关函数小结(php下的转义字符串)
Apr 12 #PHP
You might like
PHP中使用cURL实现Get和Post请求的方法
2013/03/13 PHP
php.ini save_handler 修改不生效的解决办法
2014/07/22 PHP
php实现paypal 授权登录
2015/05/28 PHP
基于php实现七牛抓取远程图片
2015/12/01 PHP
Thinkphp5.0自动生成模块及目录的方法详解
2017/04/17 PHP
php的扩展写法总结
2019/05/14 PHP
jquery选择器-根据多个属性选择示例代码
2013/10/21 Javascript
Bootstrap按钮下拉菜单组件详解
2016/05/10 Javascript
jquery实用技巧之输入框提示语句
2016/07/28 Javascript
详解Vue文档中几个易忽视部分的剖析
2018/03/24 Javascript
微信小程序中如何计算距离某个节日还有多少天
2019/07/15 Javascript
基于javascript处理nginx请求过程详解
2020/07/07 Javascript
React实现阿里云OSS上传文件的示例
2020/08/10 Javascript
[37:35]DOTA2上海特级锦标赛A组资格赛#1 Secret VS MVP.Phx第二局
2016/02/25 DOTA
[01:03:13]VG vs Pain 2018国际邀请赛小组赛BO2 第一场 8.18
2018/08/19 DOTA
[50:02]完美世界DOTA2联赛PWL S2 Magma vs FTD 第三场 11.29
2020/12/03 DOTA
Python 2.7.x 和 3.x 版本的重要区别小结
2014/11/28 Python
python正则表达式的使用
2017/06/12 Python
Python中使用支持向量机SVM实践
2017/12/27 Python
Django rstful登陆认证并检查session是否过期代码实例
2019/08/13 Python
Win下PyInstaller 安装和使用教程
2019/12/25 Python
使用Pytorch来拟合函数方式
2020/01/14 Python
利用Python计算KS的实例详解
2020/03/03 Python
美国马匹用品和骑马配件购物网站:Horse.com
2018/01/08 全球购物
日本亚马逊官方网站:Amazon.co.jp
2020/04/14 全球购物
优秀研究生自我鉴定
2013/12/04 职场文书
农村改厕实施方案
2014/03/22 职场文书
商铺消防安全责任书
2014/07/29 职场文书
2014年工程师工作总结
2014/11/25 职场文书
画展邀请函
2015/01/31 职场文书
学前教育见习总结
2015/06/23 职场文书
2016教师政治学习心得体会
2016/01/23 职场文书
500字作文之难忘的同学
2019/12/20 职场文书
解决MySQL存储时间出现不一致的问题
2021/04/28 MySQL
Mysql binlog日志文件过大的解决
2021/10/05 MySQL
JavaWeb实现显示mysql数据库数据
2022/03/19 Java/Android