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
PHP面向对象分析设计的经验原则
Sep 20 PHP
php上的memcache和memcached两个pecl库
Mar 29 PHP
PHP连接SQLServer2005 的问题解决方法
Jul 19 PHP
浅析php中如何在有限的内存中读取大文件
Jul 02 PHP
php的ddos攻击解决方法
Jan 08 PHP
PHP查询快递信息的方法
Mar 07 PHP
php5.4以上版本GBK编码下htmlspecialchars输出为空问题解决方法汇总
Apr 03 PHP
php实现简单的上传进度条
Nov 17 PHP
php文件上传 你真的掌握了吗
Nov 28 PHP
详解PHP用substr函数截取字符串中的某部分
Dec 03 PHP
PHP实现移除数组中为空或为某值元素的方法
Jan 07 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基础知识:类与对象(1)
2006/12/13 PHP
PHP 数组入门教程小结
2009/05/20 PHP
js获取url参数的使用扩展实例
2007/12/29 Javascript
JS 巧妙获取剪贴板数据 Excel数据的粘贴
2009/07/09 Javascript
javascript操作excel生成报表示例
2014/05/08 Javascript
javascript复制粘贴与clipboardData的使用
2014/10/16 Javascript
使用jQuery实现input数值增量和减量的方法
2015/01/24 Javascript
javascript中的3种继承实现方法
2016/01/27 Javascript
基于javascript制作微博发布栏效果
2016/04/04 Javascript
响应式表格之固定表头的简单实现
2016/08/26 Javascript
详解Vue 实例中的生命周期钩子
2017/03/21 Javascript
详解在vue-cli项目中安装node-sass
2017/06/21 Javascript
jQuery实现html table行Tr的复制、删除、计算功能
2017/07/10 jQuery
JavaScript面向对象的程序设计(犯迷糊的小羊)
2018/05/27 Javascript
vue 监听屏幕高度的实例
2018/09/05 Javascript
微信小程序实现图片滚动效果示例
2018/12/05 Javascript
如何根据业务封装自己的功能组件
2019/04/19 Javascript
JS+html5实现异步上传图片显示上传文件进度条功能示例
2019/11/09 Javascript
Python只用40行代码编写的计算器实例
2017/05/10 Python
python中利用zfill方法自动给数字前面补0
2018/04/10 Python
对python过滤器和lambda函数的用法详解
2019/01/21 Python
ML神器:sklearn的快速使用及入门
2019/07/11 Python
Python中的延迟绑定原理详解
2019/10/11 Python
PIL包中Image模块的convert()函数的具体使用
2020/02/26 Python
Scotch Porter官方网站:男士美容产品
2020/08/31 全球购物
高中毕业生自我鉴定范文
2013/09/26 职场文书
会计专业自荐信
2013/12/02 职场文书
魅力教师事迹材料
2014/01/10 职场文书
幼儿园中秋节活动方案2013
2014/01/29 职场文书
学校中秋节活动总结
2015/03/23 职场文书
王亚平太空授课观后感
2015/06/12 职场文书
学会感恩主题班会
2015/08/12 职场文书
人民币使用说明书
2019/04/17 职场文书
MySQL 重写查询语句的三种策略
2021/05/10 MySQL
浅谈tf.train.Saver()与tf.train.import_meta_graph的要点
2021/05/26 Python
mysql timestamp比较查询遇到的坑及解决
2021/11/27 MySQL