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 getsiteurl()函数
Sep 05 PHP
php读取xml实例代码
Jan 28 PHP
Memcache 在PHP中的使用技巧
Feb 08 PHP
PhpDocumentor 2安装以及生成API文档的方法
May 21 PHP
PHP中cookie和session的区别实例分析
Aug 28 PHP
php格式输出文件var_export函数实例
Nov 15 PHP
php中call_user_func函数使用注意事项
Nov 21 PHP
linux下实现定时执行php脚本
Feb 13 PHP
php实现将任意进制数转换成10进制的方法
Apr 17 PHP
PHP操作mysql数据库分表的方法
Jun 09 PHP
Laravel利用gulp如何构建前端资源详解
Jun 03 PHP
laravel接管Dingo-api和默认的错误处理方式
Oct 25 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 中关于ord($str)&amp;gt;0x80的详细说明
2012/09/23 PHP
PHP中array_keys和array_unique函数源码的分析
2016/02/26 PHP
PHP购物车类Cart.class.php定义与用法示例
2016/07/20 PHP
详解PHP如何更好的利用PHPstorm的自动提示
2017/08/18 PHP
YII框架模块化处理操作示例
2019/04/26 PHP
javascript IE中的DOM ready应用技巧
2008/07/23 Javascript
读jQuery之二(两种扩展)
2011/06/11 Javascript
JS实现控制表格内指定单元格内容对齐的方法
2015/03/30 Javascript
微信小程序 页面跳转传参详解
2016/10/28 Javascript
Vuex新手的理解与使用详解
2019/05/31 Javascript
JS面向对象编程基础篇(三) 继承操作实例详解
2020/03/03 Javascript
利用Python读取文件的四种不同方法比对
2017/05/18 Python
Python实现通讯录功能
2018/02/22 Python
python 实现turtle画图并导出图片格式的文件
2019/12/07 Python
tensorflow实现tensor中满足某一条件的数值取出组成新的tensor
2020/01/04 Python
pytorch nn.Conv2d()中的padding以及输出大小方式
2020/01/10 Python
python给视频添加背景音乐并改变音量的具体方法
2020/07/19 Python
python使用matplotlib的savefig保存时图片保存不完整的问题
2021/01/08 Python
python实现简单的井字棋游戏(gui界面)
2021/01/22 Python
Python爬虫UA伪装爬取的实例讲解
2021/02/19 Python
巧用 CSS3的webkit-box-reflect 倒影实现各类动效
2021/03/05 HTML / CSS
AmazeUI导航的示例代码
2020/08/14 HTML / CSS
汉语专业应届生求职信
2013/10/01 职场文书
保荐人的岗位职责
2013/11/19 职场文书
教师职称自我鉴定
2014/02/12 职场文书
法定代表人授权委托书
2014/04/04 职场文书
店铺转让协议书
2014/12/02 职场文书
党员思想汇报材料
2014/12/19 职场文书
先进班组事迹材料
2014/12/25 职场文书
领导工作表现评语
2015/01/04 职场文书
培训通知
2015/04/17 职场文书
幼儿园小班工作总结2015
2015/04/25 职场文书
大学生入党自传2015
2015/06/26 职场文书
公司开业主持词
2015/07/02 职场文书
小学新课改心得体会
2016/01/22 职场文书
win10如何开启ahci模式?win10开启ahci模式详细操作教程
2022/07/23 数码科技