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编码规范-php coding standard
Mar 16 PHP
php面向对象全攻略 (二) 实例化对象 使用对象成员
Sep 30 PHP
使用zend studio for eclipse不能激活代码提示功能的解决办法
Oct 11 PHP
php simplexmlElement操作xml的命名空间实现代码
Jan 04 PHP
Windows下部署Apache+PHP+MySQL运行环境实战
Aug 31 PHP
PHP strip_tags()去除HTML、XML以及PHP的标签介绍
Feb 18 PHP
php中判断数组相等的方法以及数组运算符介绍
Mar 30 PHP
Zend Framework分页类用法详解
Mar 22 PHP
php使用ffmpeg获取视频信息并截图的实现方法
May 03 PHP
PHP实现无限分类的实现方法
Nov 14 PHP
PHP面向对象五大原则之单一职责原则(SRP)详解
Apr 04 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
snoopy PHP版的网络客户端提供本地下载
2008/04/15 PHP
学习php设计模式 php实现策略模式(strategy)
2015/12/07 PHP
实现PHP中session存储及删除变量
2018/10/15 PHP
PHP中通过getopt解析GNU C风格命令行选项
2019/11/18 PHP
CL vs ForZe BO5 第二场 2.13
2021/03/10 DOTA
基于JQuery框架的AJAX实例代码
2009/11/03 Javascript
JavaScript 学习笔记一些小技巧
2010/03/28 Javascript
javascript常用方法、属性集合及NodeList 和 HTMLCollection 的浏览器差异
2010/12/25 Javascript
js获取鼠标点击的位置实现思路及代码
2014/05/09 Javascript
javascript制作的滑动图片菜单
2015/05/15 Javascript
jquery表单对象属性过滤选择器实例分析
2015/05/18 Javascript
javascript数组去重的六种方法汇总
2015/08/16 Javascript
js焦点文字滚动效果代码分享
2015/08/25 Javascript
Javascript闭包实例详解
2015/11/29 Javascript
基于jquery实现省市联动特效
2015/12/17 Javascript
javascript如何实现360度全景照片问题汇总
2016/04/04 Javascript
jquery 无限极下拉菜单的简单实例(精简浓缩版)
2016/05/31 Javascript
HTML5+jQuery实现搜索智能匹配功能
2017/03/24 jQuery
BootStrap中Table隐藏后显示问题的实现代码
2017/08/31 Javascript
vue.js给动态绑定的radio列表做批量编辑的方法
2018/02/28 Javascript
使用vue制作探探滑动堆叠组件的实例代码
2018/03/07 Javascript
微信小程序开发之改变data中数组或对象的某一属性值
2018/07/05 Javascript
Vue实现附件上传功能
2020/05/28 Javascript
详解React 条件渲染
2020/07/08 Javascript
解决VueCil代理本地proxytable无效报错404的问题
2020/11/07 Javascript
[15:41]教你分分钟做大人——灰烬之灵
2015/03/11 DOTA
Python OpenCV处理图像之图像直方图和反向投影
2018/07/10 Python
python实现画五角星和螺旋线的示例
2019/01/20 Python
python实现提取str字符串/json中多级目录下的某个值
2020/02/27 Python
Python类及获取对象属性方法解析
2020/06/15 Python
亲子拓展活动方案
2014/02/20 职场文书
理想国读书笔记
2015/06/25 职场文书
学校运动会通讯稿
2015/07/18 职场文书
有关花店创业的计划书模板
2019/08/27 职场文书
深入理解python多线程编程
2021/04/18 Python
java设计模式--建造者模式详解
2021/07/21 Java/Android