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 相关文章推荐
Mysql和网页显示乱码解决方法集锦
Mar 27 PHP
PHP伪造referer实例代码
Sep 20 PHP
php中hashtable实现示例分享
Feb 13 PHP
php随机生成数字字母组合的方法
Mar 18 PHP
PHP JSON格式的中文显示问题解决方法
Apr 09 PHP
PHP脚本监控Nginx 502错误并自动重启php-fpm
May 13 PHP
浅谈php提交form表单
Jul 01 PHP
PHP中substr_count()函数获取子字符串出现次数的方法
Jan 07 PHP
PHP数据库操作Helper类完整实例
May 11 PHP
PHP结合Ueditor并修改图片上传路径
Oct 16 PHP
PHP排序算法之归并排序(Merging Sort)实例详解
Apr 21 PHP
Laravel + Elasticsearch 实现中文搜索的方法
Feb 02 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
第七节 类的静态成员 [7]
2006/10/09 PHP
利用static实现表格的颜色隔行显示的代码
2007/09/02 PHP
php面向对象全攻略 (九)访问类型
2009/09/30 PHP
Yii2下session跨域名共存的解决方案
2017/02/04 PHP
PHP/HTML混写的四种方式总结
2017/02/27 PHP
PHP count()函数讲解
2019/02/03 PHP
jquery选择器之层级过滤选择器详解
2014/01/27 Javascript
JS和JQ的event对象区别分析
2014/11/24 Javascript
jquery使用slideDown实现模块缓慢拉出效果的方法
2015/03/27 Javascript
Jsonp 关键字详解及json和jsonp的区别,ajax和jsonp的区别
2015/12/30 Javascript
开源免费天气预报接口API及全国所有地区代码(国家气象局提供)
2016/12/26 Javascript
JavaScript中object和Object的区别(详解)
2017/02/27 Javascript
Vue插件写、用详解(附demo)
2017/03/20 Javascript
Angular 4依赖注入学习教程之InjectToken的使用(八)
2017/06/04 Javascript
Node.js的Koa实现JWT用户认证方法
2018/05/05 Javascript
微信小程序开发之路由切换页面重定向问题
2018/09/18 Javascript
node学习笔记之读写文件与开启第一个web服务器操作示例
2019/05/29 Javascript
ES6之Proxy的get方法详解
2019/10/11 Javascript
小程序接入腾讯位置服务的详细流程
2020/03/03 Javascript
ant design pro中可控的筛选和排序实例
2020/11/17 Javascript
使用Python获取CPU、内存和硬盘等windowns系统信息的2个例子
2014/04/15 Python
跟老齐学Python之大话题小函数(2)
2014/10/10 Python
数据挖掘之Apriori算法详解和Python实现代码分享
2014/11/07 Python
python 计算数组中每个数字出现多少次--“Bucket”桶的思想
2017/12/19 Python
Python numpy 点数组去重的实例
2018/04/18 Python
解决Python plt.savefig 保存图片时一片空白的问题
2019/01/10 Python
Python 获取项目根路径的代码
2019/09/27 Python
Python如何把多个PDF文件合并代码实例
2020/02/13 Python
python应用Axes3D绘图(批量梯度下降算法)
2020/03/25 Python
法国春天百货官网:Printemps.com
2020/06/29 全球购物
.NET里面如何取得当前的屏幕分辨率
2012/12/06 面试题
基于Go Int转string几种方式性能测试
2021/04/28 Golang
nginx安装以及配置的详细过程记录
2021/09/15 Servers
Android自定义ScrollView实现阻尼回弹
2022/04/01 Java/Android
Python利用capstone实现反汇编
2022/04/06 Python
CentOS7安装GlusterFS集群以及相关配置
2022/04/12 Servers