手机版

php下用GD生成缩略图的两种选择和区别

时间:2021-11-27 来源:互联网 编辑:宝哥软件园 浏览:

PHP的GD扩展提供了两个缩放图像的功能:图像副本大小调整(dest、src、dx、dy、sx、sy、dw、DH、SW、sh);imagecopyressampled(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,$x,$y,$width,$ height);//imagecopy resampleted($ dst,$src,0,0,0,$x,$y,$width,$ height);标题(' Content-type : IMage/JPEG ');ImageJPEG($dst,',100);原图:

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

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

显然,这两个函数生成的图像效果是不同的,ImageCopyResampled()函数生成的结果更平滑更好。顺便粘贴一个效果,用ASCII表示图像。ImageColorAt()有一个非常有趣的用途,它可以循环检查图像中每个像素的颜色,然后对颜色数据进行操作。源代码:html body bgcolor=' # 000000 ' style=' line-height :6 pt '?PHP $ im=imagecreatefrom JPEG(' 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=#xxx*/font',$rgb['红色'],$rgb['绿色'],$rgb['蓝色']);}回显“br \ n”;} image destroy($ im);/body/html

是不是很有趣,呵呵?

版权声明:php下用GD生成缩略图的两种选择和区别是由宝哥软件园云端程序自动收集整理而来。如果本文侵犯了你的权益,请联系本站底部QQ或者邮箱删除。