PHP生成图片缩略图类示例
本文实例讲述了PHP生成图片缩略图类。分享给大家供大家参考,具体如下:
classApp_image_helper{ protected$imgFileName; protected$imgWidth; protected$imgHeight; protected$imgMime; protected$imgResource; static$imgMineList =array( 'jpeg'=>'image/jpeg', 'gif'=>'image/gif', 'png'=>'image/png', 'wbmp'=>'image/wbmp', ); /** *根据文件名,初始化图片, *计算出给定图片的宽、高、图片类型,并获取图片的资源保存到内存,便于下次使用 *App_image_helperconstructor. * *@param$fileName */ publicfunction__construct($fileName){ $this->imgFileName=$fileName; list($this->imgWidth,$this->imgHeight,$this->imgMime)=$this->getImageInfo($this->imgFileName); $this->imgResource=$this->getImageResource($this->imgFileName); } /** *根据图片路径获取相关宽、高、MIME类型信息 * *@param$fileName * *@returnarray|null */ protectedfunctiongetImageInfo($fileName){ $result=null; if(is_file($fileName)){ $tmpImageInfo=getimagesize($fileName); if($tmpImageInfo){ $result=array($tmpImageInfo[0],$tmpImageInfo[1],$tmpImageInfo['mime']); } } return$result; } /** *将图片文件转为资源类类型 * *@param$fileName * *@returnnull|resource */ protectedfunctiongetImageResource($fileName){ $image=null; if(is_file($fileName)){ switch($this->imgMime){ caseself::$imgMineList['jpeg']: $image=imagecreatefromjpeg($fileName); break; caseself::$imgMineList['gif']: $image=imagecreatefromgif($fileName); break; caseself::$imgMineList['png']: $image=imagecreatefrompng($fileName); break; caseself::$imgMineList['wbmp']: $image=imagecreatefromwbmp($fileName); break; default: break; } } return$image; } /** *可根据固定宽,等比缩放图片;或根据百分比,等比缩放图片 * *@paramint$width *@paramint$percent * *@returnarray|null */ protectedfunctiongetSizeByScale($width=360,$percent=1){ $result=null; if($this->imgWidth&&$this->imgHeight){ if($width){ $result=array($width,intval($width*$this->imgHeight/$this->imgWidth)); }elseif($percent){ $result=array(intval($this->imgWidth*$percent),intval($this->imgHeight*$percent)); } } return$result; } /** *外调 * *@paramint$percentOrWidthint整数表示图片缩放为固定宽度,0.0~0.99999表示缩放百分比 *@paramnull$fileName *@paramint$quality *@parambool$reSample重新采样图片,默认是 * *@returnbool */ publicfunctioncreateImage($percentOrWidth=1,$fileName=null,$quality=75,$reSample=true){ $result=false; $fileName?header('Content-Type:'.$this->imgMime):false; $size=$this->getSizeByScale(($percentOrWidth<=1)?null:$percentOrWidth,$percentOrWidth); if($size){ $thumb=imagecreatetruecolor($size[0],$size[1]); if($reSample){ imagecopyresampled($thumb,$this->imgResource,0,0,0,0,$size[0],$size[1],$this->imgWidth,$this->imgHeight); }else{ imagecopyresized($thumb,$this->imgResource,0,0,0,0,$size[0],$size[1],$this->imgWidth,$this->imgHeight); } $result=imagejpeg($thumb,$fileName,$quality); } return$result; } }
PS:这里再为大家推荐几款比较实用的图片处理工具供大家参考使用:
在线图片转换BASE64工具:
http://tools.jb51.net/transcoding/img2base64
ICO图标在线生成工具:
http://tools.jb51.net/aideddesign/ico_img
在线Email邮箱图标制作工具:
http://tools.jb51.net/email/emaillogo
在线图片格式转换(jpg/bmp/gif/png)工具:
http://tools.jb51.net/aideddesign/picext
更多关于PHP相关内容感兴趣的读者可查看本站专题:《PHP图形与图片操作技巧汇总》、《PHP基本语法入门教程》、《PHP运算与运算符用法总结》、《php面向对象程序设计入门教程》、《PHP网络编程技巧总结》、《PHP数组(Array)操作技巧大全》、《php字符串(string)用法总结》、《php+mysql数据库操作入门教程》及《php常见数据库操作技巧汇总》
希望本文所述对大家PHP程序设计有所帮助。