php下用GD生成生成缩略图的两个选择和区别_php教程-查字典教程网
php下用GD生成生成缩略图的两个选择和区别
php下用GD生成生成缩略图的两个选择和区别
发布时间:2016-12-29 来源:查字典编辑
摘要:PHP的GD扩展提供了两个函数来缩放图像:ImageCopyResized(dest,src,dx,dy,sx,sy,dw,dh,sw,sh...

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);

?>

原图:

使用ImageCopyResized()函数生成的结果:

使用ImageCopyResampled()函数生成的结果:

很明显可以看到两个函数生成的图像效果是不一样的,ImageCopyResampled()函数生成的结果比较平滑,效果较好。

顺便贴一个效果,用ASCII表示图像。ImageColorAt()有一个很有趣的用处,它可以循环检查

图像中的每一个像素的颜色,然后对该颜色数据进行操作。

源代码:

<html>

<bodybgcolor="#000000"> <?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('<fontcolor=#%02x%02x%02x>*</font>',

$rgb['red'],$rgb['green'],$rgb['blue']);

}

echo"<br>n";

}

imagedestroy($im);

?>

</body></html>

很有趣吧,呵呵..

相关阅读
推荐文章
猜你喜欢
附近的人在看
推荐阅读
拓展阅读
  • 大家都在看
  • 小编推荐
  • 猜你喜欢
  • 最新php教程学习
    热门php教程学习
    编程开发子分类