资源描述:
《php图片等比例缩放》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、在PHP网站开发过程中,如果你建立的网站涉及大量的图片处理,必然涉及到图片上传,缩放,而如何保持图片不失真,是很多初级PHP网站开发者比较头疼的一件事,今天David就和大家分享一下如何进行图片缩放。使用之前你需要下载安装GD库,以支持PHP图片处理。下面我们结合代码讲解具体的PHP图片缩放处理的思路。12345678910111213141516171819202122232425functionresizeImage($im,$maxwidth,$maxheight,$name,$filetype){$pic_width=image
2、sx($im);$pic_height=imagesy($im);if(($maxwidth&&$pic_width>$maxwidth)
3、
4、($maxheight&&$pic_height>$maxheight)){if($maxwidth&&$pic_width>$maxwidth){$widthratio=$maxwidth/$pic_width;$resizewidth_tag=true;}if($maxheight&&$pic_height>$maxheight){$heightratio=$maxheight/$pic_he
5、ight;$resizeheight_tag=true;}if($resizewidth_tag&&$resizeheight_tag){if($widthratio<$heightratio)$ratio=$widthratio;else$ratio=$heightratio;262728293031323334353637383940414243444546474849505152}if($resizewidth_tag&&!$resizeheight_tag)$ratio=$widthratio;if($resizeheight_
6、tag&&!$resizewidth_tag)$ratio=$heightratio;$newwidth=$pic_width*$ratio;$newheight=$pic_height*$ratio;if(function_exists("imagecopyresampled")){$newim=imagecreatetruecolor($newwidth,$newheight);imagecopyresampled($newim,$im,0,0,0,0,$newwidth,$newheight,$pic_width,$pic_hei
7、ght);}else{$newim=imagecreate($newwidth,$newheight);imagecopyresized($newim,$im,0,0,0,0,$newwidth,$newheight,$pic_width,$pic_height);}$name=$name.$filetype;imagejpeg($newim,$name);imagedestroy($newim);}else{53545556$name=$name.$filetype;imagejpeg($im,$name);}}参数说明:$im图片对
8、象,应用函数之前,你需要用imagecreatefromjpeg()读取图片对象,如果PHP环境支持PNG,GIF,也可使用imagecreatefromgif(),imagecreatefrompng();$maxwidth定义生成图片的最大宽度(单位:像素)$maxheight生成图片的最大高度(单位:像素)$name生成的图片名$filetype最终生成的图片类型(.jpg/.png/.gif)代码注释:第3~4行:读取需要缩放的图片实际宽高第8~26行:通过计算实际图片宽高与需要生成图片的宽高的压缩比例最终得出进行图片缩放是根据
9、宽度还是高度进行缩放,当前程序是根据宽度进行图片缩放。如果你想根据高度进行图片缩放,你可以将第22行的语句改成$widthratio>$heightratio第28~31行:如果实际图片的长度或者宽度小于规定生成图片的长度或者宽度,则要么根据长度进行图片缩放,要么根据宽度进行图片缩放。第33~34行:计算最终缩放生成的图片长宽。第36~45行:根据计算出的最终生成图片的长宽改变图片大小,有两种改变图片大小的方法:ImageCopyResized()函数在所有GD版本中有效,但其缩放图像的算法比较粗糙。ImageCopyResamples
10、(),其像素插值算法得到的图像边缘比较平滑,但该函数的速度比ImageCopyResized()慢。第47~49行:最终生成经过处理后的图片,如果你需要生成GIF或PNG,你需要将imagejpeg()函数