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 has encountered an Access Violation
Jan 15 PHP
ZF等常用php框架中存在的问题
Jan 10 PHP
PHP 引用是个坏习惯
Mar 12 PHP
php数组的概述及分类与声明代码演示
Feb 26 PHP
php数组去重复数据示例
Feb 25 PHP
谈谈你对Zend SAPIs(Zend SAPI Internals)的理解
Nov 10 PHP
ThinkPHP中limit()使用方法详解
Apr 19 PHP
yii2整合百度编辑器umeditor及umeditor图片上传问题的解决办法
Apr 20 PHP
PHP7.1实现的AES与RSA加密操作示例
Jun 15 PHP
PHP设计模式之单例模式定义与用法分析
Mar 26 PHP
Laravel5.5 视图 - 创建视图和数据传递示例
Oct 21 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 记录进行累加并显示总时长为秒的结果
2011/11/04 PHP
php 注册时输入信息验证器的实现详解
2013/07/05 PHP
php使用escapeshellarg时中文被过滤的解决方法
2016/07/10 PHP
基于PHPexecl类生成复杂的报表表头示例
2016/10/14 PHP
PHP curl批处理及多请求并发实现方法分析
2018/08/15 PHP
解决PhpStorm64不能启动的问题
2020/06/20 PHP
javascript 文本框水印/占位符(watermark/placeholder)实现方法
2012/01/15 Javascript
jquery固定底网站底部菜单效果
2013/08/13 Javascript
模拟多级复选框效果的jquery代码
2013/08/13 Javascript
jQuery 快速结束当前正在执行的动画
2013/11/20 Javascript
JS将光标聚焦在文本最后的实现代码
2014/03/28 Javascript
js光标定位文本框回车表单提交问题的解决方法
2015/05/11 Javascript
JS基于Mootools实现的个性菜单效果代码
2015/10/21 Javascript
第十篇BootStrap轮播插件使用详解
2016/06/21 Javascript
js原生之焦点图转换加定时器实例
2016/12/12 Javascript
详解Angular的双向数据绑定(MV-VM)
2016/12/26 Javascript
jQuery动态生成表格及右键菜单功能示例
2017/01/13 Javascript
jquery实现简单自动轮播图效果
2020/07/29 jQuery
JavaScript WeakMap使用详解
2021/02/05 Javascript
[03:17]史诗级大片应援2018DOTA2国际邀请赛 致敬每一位坚守遗迹的勇士
2018/07/20 DOTA
[41:08]TNC vs VG 2018国际邀请赛小组赛BO2 第一场 8.16
2018/08/17 DOTA
Python模块学习 filecmp 文件比较
2012/08/27 Python
Python Web框架Flask中使用新浪SAE云存储实例
2015/02/08 Python
在Python中利用Pandas库处理大数据的简单介绍
2015/04/07 Python
用Python中的wxPython实现最基本的浏览器功能
2015/04/14 Python
用Python从0开始实现一个中文拼音输入法的思路详解
2019/07/20 Python
使用Python的datetime库处理时间(RPA流程)
2019/11/24 Python
Django实现whoosh搜索引擎使用jieba分词
2020/04/08 Python
LocalStorage记住用户和密码功能
2017/07/24 HTML / CSS
品恩科技软件测试面试题
2014/10/26 面试题
Servlet方面面试题
2016/09/28 面试题
统计学专业毕业生的自我评价分享
2013/11/28 职场文书
遥感技术与仪器求职信
2014/02/22 职场文书
聚美优品的广告词
2014/03/14 职场文书
食品采购员岗位职责
2014/04/14 职场文书
Python捕获、播放和保存摄像头视频并提高视频清晰度和对比度
2022/04/14 Python