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 相关文章推荐
第八节 访问方式 [8]
Oct 09 PHP
E路文章系统PHP
Dec 11 PHP
PHP Google的translate API代码
Dec 10 PHP
关于Zend Studio 配色方案插件的介绍
Jun 24 PHP
PHP-Java-Bridge使用笔记
Sep 22 PHP
php中chdir()函数用法实例
Nov 13 PHP
php传值赋值和传地址赋值用法实例分析
Jun 20 PHP
浅谈PHP的数据库接口和技术
Dec 09 PHP
PHP中TP5 上传文件的实例详解
Jul 31 PHP
使用PHP连接数据库_实现用户数据的增删改查的整体操作示例
Sep 01 PHP
Laravel框架使用monolog_mysql实现将系统日志信息保存到mysql数据库的方法
Aug 16 PHP
TP5(thinkPHP5)框架基于ajax与后台数据交互操作简单示例
Sep 03 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实现文件上传二法
2006/10/09 PHP
Smarty foreach控制循环次数的一些方法
2015/07/01 PHP
php中引用&amp;的用法分析【变量引用,函数引用,对象引用】
2016/12/12 PHP
php连接mysql数据库
2017/03/21 PHP
PHP实现留言板功能的详细代码
2017/03/25 PHP
PHP基于DOMDocument解析和生成xml的方法分析
2017/07/17 PHP
nodejs 后缀名判断限制代码
2011/03/31 NodeJs
js DOM 元素ID就是全局变量
2012/09/20 Javascript
JavaScript实现快速排序(自已编写)
2012/12/19 Javascript
修改file按钮的默认样式实现代码
2013/04/23 Javascript
jQuery实现列表自动循环滚动鼠标悬停时停止滚动
2013/09/06 Javascript
使用jquery.upload.js实现异步上传示例代码
2014/07/29 Javascript
实现高性能JavaScript之执行与加载
2016/01/30 Javascript
JS组件系列之Bootstrap table表格组件神器【终结篇】
2016/05/10 Javascript
jQuery实现Select左右复制移动内容
2016/08/05 Javascript
node.js(express)中使用Jcrop进行图片剪切上传功能
2017/04/21 Javascript
基于滚动条位置判断的简单实例
2017/12/14 Javascript
JS动态插入脚本和插入引用外部链接脚本的方法
2018/05/21 Javascript
vue单页面实现当前页面刷新或跳转时提示保存
2018/11/02 Javascript
微信小程序中的店铺评分组件及vue中用svg实现的评分显示组件
2018/11/16 Javascript
[43:51]2018DOTA2亚洲邀请赛3月30日 小组赛B组 EG VS Secret
2018/03/31 DOTA
python Django模板的使用方法(图文)
2013/11/04 Python
python自动安装pip
2014/04/24 Python
Python实现统计单词出现的个数
2015/05/28 Python
Python实现深度遍历和广度遍历的方法
2019/01/22 Python
tesserocr与pytesseract模块的使用方法解析
2019/08/30 Python
基于Keras的格式化输出Loss实现方式
2020/06/17 Python
html5的localstorage详解
2017/05/09 HTML / CSS
企业门卫岗位职责
2013/12/12 职场文书
项目副经理岗位职责
2013/12/30 职场文书
2014年应届大学生毕业自我鉴定
2014/01/31 职场文书
人力资源主管职责范本
2014/03/05 职场文书
食品采购员岗位职责
2014/04/14 职场文书
委托书范本
2014/09/13 职场文书
教师群众路线教育实践活动个人对照检查材料
2014/11/04 职场文书
医生辞职信范文
2015/03/02 职场文书