php导出群照片,分享php多功能图片处理类

本文实例为大家分享了多功能php图片处理类,供大家参考,具体内容如下

/*** Image.class.php 图像处理类* @author Administrator**/

class Image{private $path='';

/*** 构造方法* @param unknown $path*/

function __construct($path=''){if (!empty($path)) {$this->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

}

if ($height

}

//图像等比例缩放算法if ($imaginfo['width']*$size['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&&$otsc<=imagecolorstotal($imageres)) {

//取得某索引的颜色$stran=imagecolorsforindex($imageres, $otsc);

//为图像分配颜色$newt=imagecolorallocate($imageres, $stran['red'], $stran['green'], $stran['blue']);

//区域填充函数imagefill($newimg, 0, 0, $newt);

//为图像定义透明色imagecolortransparent($newimg,$newt);

}

imagecopyresized($newimg, $imageres, 0, 0, 0, 0, $size['width'], $size['height'], $imageinfo['width'], $imageinfo['height']);

imagedestroy($imageres);

return $newimg;

}

/**+----------------------------------------------*保存图像函数+----------------------------------------------* @param unknown $newimg* @param unknown $newname* @param unknown $imageinfo* @return unknown*/

private function SaveNewImage($newimg,$newname,$imageinfo){switch ($imageinfo['type']){case 1:

//gif$result=imagegif($newimg,$this->path.$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']

}

switch ($waterpos) {case 1:

//左上角$posX=0;

$posY=0;

break;

case 2:

//中上方$posX=$backinfo['width']-$waterinfo['width']/2;

$posY=0;

break;

case 3:

//右上角$posX=$backinfo['width']-$waterinfo['width'];

$posY=0;

break;

case 4:

//左中方$posX=0;

$posY=$backinfo['height']-$waterinfo['height']/2;

break;

case 5:

//正中间$posX=$backinfo['width']-$waterinfo['width']/2;

$posY=$backinfo['height']-$waterinfo['height']/2;

break;

case 6:

//右中方$posX=$backinfo['width']-$waterinfo['width'];

$posY=$backinfo['height']-$waterinfo['height']/2;

break;

case 7:

//底部靠左$posX=0;

$posY=$backinfo['height']-$waterinfo['height'];

break;

case 8:

//底部居中$posX=$backinfo['width']-$waterinfo['width']/2;

$posY=$backinfo['height']-$waterinfo['height'];

break;

case 9:

//底部靠右$posX=$backinfo['width']-$waterinfo['width'];

$posY=$backinfo['height']-$waterinfo['height'];

break;

case 0:default :$posX=rand(0,$backinfo['width']-$waterinfo['width']);

$posY=rand(0,$backinfo['height']-$waterinfo['height']);

break;

}

return array('posX'=>$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程序设计有所帮助。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值