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 mssql 日期出现中文字符的解决方法
Mar 10 PHP
php在window iis的莫名问题的测试方法
May 14 PHP
PHP Global变量定义当前页面的全局变量实现探讨
Jun 05 PHP
Laravel 4 初级教程之Pages、表单验证
Oct 30 PHP
PHP模块memcached使用指南
Dec 08 PHP
PHP5全版本绕过open_basedir读文件脚本漏洞详细介绍
Jan 20 PHP
PHP编程基本语法快速入门手册
Jan 07 PHP
Laravel 5.3 学习笔记之 安装
Aug 28 PHP
详解Yii实现分页的两种方法
Jan 14 PHP
php指定长度分割字符串str_split函数用法示例
Jan 30 PHP
老生常谈PHP面向对象之标识映射
Jun 21 PHP
PHP封装的数据库模型Model类完整示例【基于PDO】
Mar 14 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 yii实现model添加默认值的方法(两种方法)
2016/11/10 PHP
php中的依赖注入实例详解
2019/08/14 PHP
Nigma vs Alliance BO5 第二场2.14
2021/03/10 DOTA
js+html5实现canvas绘制圆形图案的方法
2015/06/05 Javascript
页面向下滚动ajax获取数据的实现方法(兼容手机)
2016/05/24 Javascript
JavaScript中全选、全不选、反选、无刷新删除、批量删除、即点即改入库(在yii框架中操作)的代码分享
2016/11/01 Javascript
JavaScript中for循环的几种写法与效率总结
2017/02/03 Javascript
jQuery点击头像上传并预览图片
2017/02/23 Javascript
手把手教你把nodejs部署到linux上跑出hello world
2017/06/19 NodeJs
Vue.js组件通信之自定义事件详解
2019/10/19 Javascript
Jquery属性的获取/设置及样式添加/删除操作技巧分析
2019/12/23 jQuery
详细介绍解决vue和jsp结合的方法
2020/02/06 Javascript
JavaScript链式调用原理与实现方法详解
2020/05/16 Javascript
vue切换菜单取消未完成接口请求的案例
2020/11/13 Javascript
Python语言的面相对象编程方式初步学习
2016/03/12 Python
python中pylint使用方法(pylint代码检查)
2018/04/06 Python
python实现移位加密和解密
2019/03/22 Python
Python魔法方法功能与用法简介
2019/04/04 Python
python 定义类时,实现内部方法的互相调用
2019/12/25 Python
基于MSELoss()与CrossEntropyLoss()的区别详解
2020/01/02 Python
Python-numpy实现灰度图像的分块和合并方式
2020/01/09 Python
Python运行提示缺少模块问题解决方案
2020/04/02 Python
Pytorch 使用不同版本的cuda的方法步骤
2020/04/02 Python
Django DRF路由与扩展功能的实现
2020/06/03 Python
如何使用Python调整图像大小
2020/09/26 Python
HTML5实现移动端点击翻牌功能
2020/10/23 HTML / CSS
全球第二大家装零售商:Lowe’s
2018/01/13 全球购物
管理学专业个人求职信范文
2013/09/21 职场文书
计算机通信专业推荐信
2014/02/22 职场文书
《小儿垂钓》教学反思
2014/02/23 职场文书
《天安门广场》教学反思
2014/04/23 职场文书
基层领导干部“四风”问题批评与自我批评
2014/09/23 职场文书
2014年人力资源工作总结
2014/11/19 职场文书
酒店服务员岗位职责
2015/02/09 职场文书
2015年乡镇安全生产工作总结
2015/05/19 职场文书
Mysql Online DDL的使用详解
2021/05/20 MySQL