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上传图片类(随机名,缩略图,加水印)
Jun 30 PHP
PHP导入Excel到MySQL的方法
Apr 23 PHP
解析php类的注册与自动加载
Jul 05 PHP
php+mysqli事务控制实现银行转账实例
Jan 29 PHP
PHP学习笔记(二):变量详解
Apr 17 PHP
golang与php实现计算两个经纬度之间距离的方法
Jul 22 PHP
PHP之十六个魔术方法详细介绍
Nov 01 PHP
PHP命名空间namespace的定义方法详解
Mar 29 PHP
关于PHP转换超过2038年日期出错的问题解决
Jun 28 PHP
php分享朋友圈的实现代码
Feb 18 PHP
laravel5.5安装jwt-auth 生成token令牌的示例
Oct 24 PHP
TP - 比RBAC更好的权限认证方式(Auth类认证)
Mar 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
欧美媒体选出10年前最流行的17部动画
2017/01/18 日漫
PHP注释实例技巧
2008/10/03 PHP
PHP 危险函数全解析
2009/09/09 PHP
PHP 显示客户端IP与服务器IP的代码
2010/10/12 PHP
解决Codeigniter不能上传rar和zip压缩包问题
2014/03/07 PHP
仿dedecms下拉分页样式修改的thinkphp分页类实例
2014/10/30 PHP
PHP实现的自定义数组排序函数与排序类示例
2016/11/18 PHP
Zend Framework入门教程之Zend_Registry组件用法详解
2016/12/09 PHP
PHP实现UTF8二进制及明文字符串的转化功能示例
2017/11/20 PHP
Django 标签筛选的实现代码(一对多、多对多)
2018/09/05 PHP
JavaScript词法作用域与调用对象深入理解
2012/11/29 Javascript
JS获取图片实际宽高及根据图片大小进行自适应
2013/08/11 Javascript
JavaScript面试题(指针、帽子和女朋友)
2016/11/23 Javascript
Angular 2 ngForm中的ngModel、[ngModel]和[(ngModel)]的写法
2017/06/29 Javascript
vue 点击按钮增加一行的方法
2018/09/07 Javascript
详解基于Vue,Nginx的前后端不分离部署教程
2018/12/04 Javascript
js实现头像上传并且可预览提交
2020/12/25 Javascript
python海龟绘图实例教程
2014/07/24 Python
Numpy中的mask的使用
2018/07/21 Python
python经典趣味24点游戏程序设计
2019/07/26 Python
django drf框架中的user验证以及JWT拓展的介绍
2019/08/12 Python
python Popen 获取输出,等待运行完成示例
2019/12/30 Python
爬虫代理的cookie如何生成运行
2020/09/22 Python
java关于string最常出现的面试题整理
2021/01/18 Python
有趣的流行文化T恤、马克杯、手机壳和更多:Look Human
2019/01/07 全球购物
什么是Connection-oriented Protocol/Connectionless Protocol面向连接的协议/无连接协议
2012/09/06 面试题
环境科学毕业生自荐信
2013/11/21 职场文书
财务分析个人的自荐书范文
2013/11/24 职场文书
信息专业毕业生五年职业规划参考
2014/02/06 职场文书
食堂标语大全
2014/06/11 职场文书
社区安全生产月活动总结
2014/07/05 职场文书
渠道运营商合作协议书范本
2014/10/06 职场文书
2014年办公室工作总结范文
2014/11/12 职场文书
2016大学优秀学生干部事迹材料
2016/03/01 职场文书
《亲亲我的妈妈》观后感(3篇)
2019/09/26 职场文书
厉害!这是Redis可视化工具最全的横向评测
2021/07/15 Redis