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 模拟登陆MSN并获得用户信息
May 16 PHP
php防止sql注入代码实例
Dec 18 PHP
PHP代码优化之成员变量获取速度对比
Feb 28 PHP
安装ImageMagick出现error while loading shared libraries的解决方法
Sep 23 PHP
PHP中使用addslashes函数转义的安全性原理分析
Nov 03 PHP
golang 调用 php7详解及实例
Jan 04 PHP
老生常谈PHP 文件写入和读取(必看篇)
May 22 PHP
搭建自己的PHP MVC框架详解
Aug 16 PHP
PHP实现的简单sha1加密功能示例
Aug 27 PHP
PHP递归实现快速排序的方法示例
Dec 18 PHP
Smarty模板语法详解
Jul 20 PHP
对laravel in 查询的使用方法详解
Oct 09 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添加MySQL数据记录代码
2008/06/07 PHP
ThinkPHP关于session的操作方法汇总
2014/07/18 PHP
Yii2.0框架模型添加/修改/删除数据操作示例
2019/07/18 PHP
js history对象简单实现返回和前进
2013/10/30 Javascript
使用Object.defineProperty实现简单的js双向绑定
2016/04/15 Javascript
使用bootstrap typeahead插件实现输入框自动补全之问题及解决办法
2016/07/07 Javascript
jQuery与js实现颜色渐变的方法
2016/12/30 Javascript
浅谈js-FCC算法Friendly Date Ranges(详解)
2017/04/10 Javascript
bootstrap datepicker插件默认英文修改为中文
2017/07/28 Javascript
详解Vue基于vue-quill-editor富文本编辑器使用心得
2019/01/03 Javascript
Vue 实现点击空白处隐藏某节点的三种方式(指令、普通、遮罩)
2019/10/23 Javascript
浅谈vue-props的default写不写有什么区别
2020/08/09 Javascript
[01:00]一分钟回顾2018DOTA2亚洲邀请赛现场活动
2018/04/07 DOTA
python在windows下实现备份程序实例
2014/07/04 Python
深入学习Python中的装饰器使用
2016/06/20 Python
python方向键控制上下左右代码
2018/01/20 Python
python基础教程项目五之虚拟茶话会
2018/04/02 Python
mac下给python3安装requests库和scrapy库的实例
2018/06/13 Python
pytorch训练imagenet分类的方法
2018/07/27 Python
详解Django+uwsgi+Nginx上线最佳实战
2019/03/14 Python
在python里面运用多继承方法详解
2019/07/01 Python
Python中用pyinstaller打包时的图标问题及解决方法
2020/02/17 Python
CSS3实现菜单悬停效果
2020/11/17 HTML / CSS
Tech21美国/加拿大:英国NO.1防摔保护壳品牌
2018/01/20 全球购物
英国女性时尚精品店:THE DRESSING ROOM
2018/05/23 全球购物
荷兰最大的多品牌男装连锁店:Adam Brandstore
2019/12/31 全球购物
怎样声明一个匿名的内部类
2016/06/01 面试题
法学毕业生自我鉴定
2013/11/08 职场文书
机工车间主任岗位职责
2014/03/05 职场文书
房地产财务部员工岗位职责
2014/03/12 职场文书
2014年教师节寄语
2014/04/03 职场文书
淘宝客服专员岗位职责
2014/04/11 职场文书
个人自荐材料
2014/05/23 职场文书
健康教育主题班会
2015/08/14 职场文书
2016年党员干部廉政承诺书
2016/03/24 职场文书
python 经纬度求两点距离、三点面积操作
2021/06/03 Python