分享php多功能图片处理类,
程序员文章站
2022-05-30 17:31:04
...
分享php多功能图片处理类,
本文实例为大家分享了多功能php图片处理类,供大家参考,具体内容如下
path=$path; } } /** +----------------------------------------------- * 等比缩放函数 +----------------------------------------------- * @param unknown $name 需处理图片的名称 * @param unknown $width 缩放后的宽度 * @param unknown $height 缩放后的高度 * @param string $thumb_prixs 缩放后的前缀名 * @return mixed $newname 返回的缩放后的文件名 */ function thumb($name,$width,$height,$thumb_prixs='th_'){ //获取图片信息 $Info=$this->ImageInfo($name); //图片的宽度,高度,类型 //获取图片资源,各种类型的图片都可以创建资源,jpg,gif,png $imagres=$this->Img_resouce($name, $Info); //获取计算图片等比例之后的大小, $size=$this->getNewSize($name,$width,$height,$Info); //获取新的图片资源,处理透明背景 $newimg=$this->getImage($imagres,$size,$Info); //另存为一个新的图片,返回新的缩放后的图片名称 $newname=$this->SaveNewImage($newimg,$thumb_prixs.$name,$Info); return $newname; } /** +----------------------------------------------------------------------- * 水印标记函数 +----------------------------------------------------------------------- * @param unknown $backname 背景文件名 * @param unknown $watername 水印文件名 * @param number $waterpos 水印位置 * @param string $wa_prixs 水印前缀名 * @return boolean */ function waterMark($backname,$watername,$waterpos=0,$wa_prixs='wa_') { if (file_exists($this->path.$backname) && file_exists($this->path.$watername)) { $backinfo=$this->ImageInfo($backname); $waterinfo=$this->ImageInfo($watername); if(!$pos=$this->getPos($backinfo, $waterinfo, $waterpos)){ echo "水印图片不应该比背景图片小"; return false; } $backimg=$this->Img_resouce($backname, $backinfo); $waterimg=$this->Img_resouce($watername, $waterinfo); var_dump($backimg);exit(); $backimg=$this->CopyImage($backimg, $waterimg, $pos, $waterinfo); $this->SaveNewImage($backimg, $wa_prixs.$backname, $backinfo); }else{ echo "图片或水印不存在"; return false; } } /** +----------------------------------------------------------------------- * 获取图片信息函数 +----------------------------------------------------------------------- * @param unknown $name * @return unknown */ private function ImageInfo($img) { $imageInfo=getimagesize($img); if ($imageInfo!==false) { $imageType=strtolower(substr(image_type_to_extension($imageInfo[2]),1)); $imageSize=filesize($img); $Info=array( "width" => $imageInfo[0], "height" => $imageInfo[1], "type" => $imageType, "size" => $imageSize, "mime" => $imageInfo['mime'] ); return $Info; }else{ return false; } } /** +-------------------------------------------------------- * 创建原图像格式函数 +-------------------------------------------------------- * @param unknown $name * @param unknown $imaginfo * @return boolean|resource */ private function Img_resouce($name,$imageinfo){ $iamgeres=$this->path.$name; //var_dump($iamgeres);exit(); switch ($imageinfo['type']) { case 'gif': $img=imagecreatefromgif($name); break; case 'jpg': $img=imagecreatefromjpeg($name); break; case 'png': $img=imagecreatefrompng($name); break; } return $img; } /** +-------------------------------------------------- * 获取等比缩放尺寸函数 +-------------------------------------------------- * @param unknown $name * @param unknown $width * @param unknown $height * @param unknown $imaginfo * @return Ambigous*/ private function getNewSize($name,$width,$height,$imaginfo){ $size['width']=$imaginfo['width']; $size['height']=$imaginfo['height']; if ($width$imaginfo['height']*$size['height']) { $size['height']=round($imaginfo['height']*$size['width']/$imaginfo['width']); }else{ $size['width']=round($imaginfo['width']*$size['height']/$imaginfo['height']); } return $size; } private function getImage($imageres,$size,$imageinfo){ //新建一个真彩色图像 $newimg=imagecreatetruecolor($size['width'], $size['height']); //将某个颜色定义为透明色 $otsc=imagecolortransparent($imageres); //获取图像的调色板的颜色数目 if ($otsc>=0&&$otscpath.$newname); break; case 2://jpg $result=imagejpeg($newimg,$this->path.$newname); break; case 3://png $result=imagepng($newimg,$this->path.$newname); break; } imagedestroy($newimg); return $newname; } /** +----------------------------------------------------------------- * 获取水印位置函数 +----------------------------------------------------------------- * @param unknown $backinfo 背景信息 * @param unknown $waterinfo 水印信息 * @param unknown $waterpos 水印位置 * @return boolean|multitype:number 返回坐标数组 */ private function getPos($backinfo,$waterinfo,$waterpos) { if ($backinfo['width']$posX,'posY'=>$posY); } /** +------------------------------------------------------------------- * 拷贝图像 +------------------------------------------------------------------- * @param unknown $backimg 背景资源 * @param unknown $waterimg 水印资源 * @param unknown $pos 水印位置 * @param unknown $waterinfo 水印信息 * @return unknown */ private function CopyImage($backimg,$waterimg,$pos,$waterinfo) { imagecopy($backimg, $waterimg, $pos['posX'], $pos['posY'], 0, 0, $waterinfo['width'], $waterinfo['height']); imagedestroy($waterimg); return $backimg; } } ?>
以上就是本文的全部内容,希望对大家学习PHP程序设计有所帮助。
上一篇: php 判断字符串在另一个字符串中位置