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 相关文章推荐
分页显示Oracle数据库记录的类之一
Oct 09 PHP
PHP 高手之路(二)
Oct 09 PHP
PHP 如何向 MySQL 发送数据
Oct 09 PHP
深入掌握include_once与require_once的区别
Jun 17 PHP
yii操作session实例简介
Jul 31 PHP
UTF-8正则表达式如何匹配汉字
Aug 03 PHP
PHP API接口必备之输出json格式数据示例代码
Jun 27 PHP
PHP验证码无法显示的原因及解决办法
Aug 11 PHP
PDO::getAvailableDrivers讲解
Jan 28 PHP
Laravel框架实现简单的学生信息管理平台案例
May 07 PHP
Laravel 对某一列进行筛选然后求和sum()的例子
Oct 10 PHP
PHP var关键字相关原理及使用实例解析
Jul 11 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
如何在WIN2K下安装PHP4.04
2006/10/09 PHP
php导入导出excel实例
2013/10/25 PHP
PHP+javascript制作带提示的验证码源码分享
2014/05/28 PHP
CI(CodeIgniter)框架配置
2014/06/10 PHP
php数字运算验证码的实现代码
2015/07/30 PHP
PHP设计模式之简单投诉页面实例
2016/02/24 PHP
php将字符串转换为数组实例讲解
2020/05/05 PHP
JavaScript 用Node.js写Shell脚本[译]
2012/09/20 Javascript
javascript的字符串按引用复制和传递,按值来比较介绍与应用
2012/12/28 Javascript
基于jQuery中对数组进行操作的方法
2013/04/16 Javascript
动态获取复选框checkbox选中个数的jquery代码
2013/06/25 Javascript
jQuery技巧之让任何组件都支持类似DOM的事件管理
2016/04/05 Javascript
vue2 前后端分离项目ajax跨域session问题解决方法
2017/04/27 Javascript
JS获取日期的方法实例【昨天,今天,明天,前n天,后n天的日期】
2017/09/28 Javascript
详解让sublime text3支持Vue语法高亮显示的示例
2017/09/29 Javascript
推荐10款扩展Web表单的JS插件
2017/12/25 Javascript
angularjs 动态从后台获取下拉框的值方法
2018/08/13 Javascript
详解如何解决Vue和vue-template-compiler版本之间的问题
2018/09/17 Javascript
详解JavaScript 的执行机制
2020/09/18 Javascript
深入了解Python中pop和remove的使用方法
2018/01/09 Python
python根据unicode判断语言类型实例代码
2018/01/17 Python
PyQt5打开文件对话框QFileDialog实例代码
2018/02/07 Python
详解利用django中间件django.middleware.csrf.CsrfViewMiddleware防止csrf攻击
2018/10/09 Python
解决Django layui {{}}冲突的问题
2019/08/29 Python
使用pytorch实现可视化中间层的结果
2019/12/30 Python
python字典的值可以修改吗
2020/06/29 Python
简单的命令查看安装的python版本号
2020/08/28 Python
HTML5几个设计和修改的页面范例分享
2015/09/29 HTML / CSS
html5 canvas简单封装一个echarts实现不了的饼图
2018/06/12 HTML / CSS
司机岗位职责
2013/11/15 职场文书
校园歌手大赛策划书
2014/01/17 职场文书
一年级家长会邀请函
2014/01/25 职场文书
白岩松演讲
2014/05/21 职场文书
汉字听写大会观后感
2015/06/12 职场文书
小学开学典礼新闻稿
2015/07/17 职场文书
浅谈Python numpy创建空数组的问题
2021/05/25 Python