|
|
/** *说明: 这个类完成缩略图的生成,支持页面显示和生成文件 *version 1.0 *@author sanshi(叁石) *QQ: 35047205 *MSN: sanshi0815@tom.com *Create 2005/6/18 ******************************************************* *@param string $srcFile 源文件 *@param string $dstFile 目标文件 *@param string $fileType 当前文件类型 *@param string $im 图片打开资源句柄 *@param array $imgType 文件类型定义 */ class MakeMiniature { var $srcFile; //源文件 var $dstFile; //目标文件 var $fileType; //文件类型 var $im; //图片打开资源句柄 var $imgType=array("jpg", //文件类型定义 "gif", "png", "bmp"); /** *说明: 取得文件类型 *@param string $fileName 文件名 *@return boolean 符合return true */ function findType($fileName) { if($type=strstr($fileName,".")) { $type=substr($type,1); if(!strstr($type,".")) { $var=$type; }else{ echo "file type error! "; } }else{ echo "file type error! "; } for($i=0;$i<=count($this->imgType);$i++) { if(Strcmp($this->imgType[$i],$var)==0) { $this->fileType=$var; return true; }else{ return false; } } } /** *@param $fileType 文件类型 *@return resource 打开图片的资源句柄 */ function loadImg($fileType) { $type=$this->isNull($fileType); switch($type) { case "jpg": $im=ImageCreateFromjpeg($this->srcFile); break; case "gif": $im=ImageCreateFromGIF($this->srcFile); break; case "png": $im=imagecreatefrompng($this->srcFile); break; case "bmp": $im=imagecreatefromwbmp($this->srcFile); break; default: $im=0; echo "not you input file type! "; break; } $this->im=$im; return $im; } /** *说明: 判断标量是否为空,不为空返回变量 */ function isNull($var) { if(!isset($var)||empty($var)) { echo "变量值为null! "; exit(0); } return $var; } /** *说明: 设置源文件名和生成文件名,同时完成了文件类型的确定 * 还有对文件的打开 *@param string srcFile 目标文件 *@param String dstFile 建立文件 */ function setParam($srcFile,$dstFile) { $this->srcFile=$this->isNull($srcFile); $this->dstFile=$this->isNull($dstFile); if(!$this->findType($srcFile)) { echo "file type error!"; } if(!$this->loadImg($this->fileType)) { echo "open ".$this->srcFile."error! "; } } /** *说明 取得图象的宽度 *@param resource im 打开图象成功的资源 *@return int width 图象的宽度 */ function getImgWidth($im) { $im=$this->isNull($im); $width=imagesx($im); return $width; } /** *说明 取得图象的高度 *@param resource im 打开图象成功的资源 *@return int height 图象的高度 */ function getImgHeight($im) { $im=$this->isNull($im); $height=imagesy($im); return $height; } /** *说明 建立图象 *@param resource im 打开图象成功的资源 *@param int scale 生成图象是与原图象的比例为百分比 *@param boolean page 是否输出到页面 */ function createImg($im,$scale,$page) { $im=$this->isNull($im); $scale=$this->isNull($scale); $srcW=$this->getImgWidth($im); $srcH=$this->getImgHeight($im); $detW=round($srcW*$scale/100); $detH=round($srcH*$scale/100); //$om=ImageCreate($detW,$detH);//普通的使用 $om=imagecreatetruecolor($detW,$detH);//真色彩对gb库有要求 //ImageCopyResized ($om,$im,0,0,0,0,$detW,$detH,$srcW,$srcH); imagecopyresampled ($om,$im,0,0,0,0,$detW,$detH,$srcW,$srcH); $this->showImg($om,$this->fileType,$page); } /** *说明 建立图象 *@param resource im 打开图象成功的资源 *@param int scale 生成图象是与原图象的比例为百分比 *@param boolean page 是否输出到页面 */ function createNewImg($im,$width,$height,$page) { $im=$this->isNull($im); //$scale=$this->isNull($scale); $srcW=$this->getImgWidth($im); $srcH=$this->getImgHeight($im); $detW=$this->isNull($width); $detH=$this->isNull($height); //$om=ImageCreate($detW,$detH);//普通的使用 $om=imagecreatetruecolor($detW,$detH);//真色彩对gb库有要求 //ImageCopyResized ($om,$im,0,0,0,0,$detW,$detH,$srcW,$srcH); imagecopyresampled ($om,$im,0,0,0,0,$detW,$detH,$srcW,$srcH); $this->showImg($om,$this->fileType,$page); } /** *说明 输出图象建立失败的提示 *@param boolean boolean 判断是否输出 */ function inputError($boolean) { if(!$boolean) { echo "img input error! "; } } /** *说明 根据条件显示图片输出位置和类型 *@param resource $om 图象输出的资源 *@param String $type 输出图象的类型,现在使用源图象的类型 *@param boolean $page 是否在页面上显示 */ function showImg($om,$type,$page) { $om=$this->isNull($om); $type=$this->isNull($type); switch($type) { case "jpg": if($page) { $suc=imagejpeg($om); $this->inputError($suc); }else{ $suc=imagejpeg($om,$this->dstFile); $this->inputError($suc); } break; case "gif": if($page) { $suc=imagegif($om); $this->inputError($suc); }else{ $suc=imagegif($om,$this->dstFile); $this->inputError($suc); } break; case "png": if($page) { $suc=imagepng($om); $this->inputError($suc); }else{ $suc=imagepng($om,$this->dstFile); $this->inputError($suc); } break; case "bmp": if($page) { $suc=imagewbmp($om); $this->inputError($suc); }else{ $suc=imagewbmp($om,$this->dstFile); $this->inputError($suc); } break; default: echo "not you input file type! "; break; } } } 使用 $file=new MakeMiniature(); $file->setParam("img/Logo.jpg","img/Logo1.jpg");//设置源文件,跟生成文件 $file->createImg($file->im,200,true);//按比例生成图象,比例为200%,在页面上显示 $file->createImg($file->im,200,false);//按比例生成图象,比例为200%,生成图片保存到上面设置的名字和路径 $file->createNewImg($file->im,100,100,true);//按照自己设计的长宽生成图象,保存或者显示在页面上
|
|