|
|
|
|
版主
|
UID: 16051
来自:
精华: 0
积分: 6673
帖子: 6669
注册: 2008-6-10 11:56:00
状态:
离线
包子皮: 4.00
包子馅: 1670.50 元
|
|
|
|
|
| php可以生成缩略图和水印图的类 |
|
我的身份:公司
认证信息: 未实名认证
基本诚信:0
项目诚信:0
经验积分:26 |
|
|
用法: (1)改变图片大小 以下为引用的内容: require_once('image.php'); $img = new Image('pic.jpg'); $img->changeSize(80,50);//改变尺寸 $img->creat(); $img->free();
|
(2)添加水印 以下为引用的内容: require_once('image.php'); $img = new Image('pic.jpg'); $img->addWatermark('logo.jpg', 50);//添加水印,第一个参数是水印的图片地址,第二个参数是透明值 $img->create(); $img->
|
类的代码: 以下为引用的内容: <?php class Image { var $imageResource = NULL; var $target = NULL; var $enableTypes = array(); var $imageInfo = array(); var $createFunc = ''; var $imageType = NULL; /** * Construct for this class * * @param string $image * @return Image */ function Image($image = NULL) { //get enables if(imagetypes() & IMG_GIF) { $this->enableTypes[] = 'image/gif'; } if(imagetypes() & IMG_JPEG) { $this->enableTypes[] = 'image/jpeg'; } if (imagetypes() & IMG_JPG) { $this->enableTypes[] = 'image/jpg'; } if(imagetypes() & IMG_PNG) { $this->enableTypes[] = 'image/png'; } //end get if($image != NULL) { $this->setImage($image); } } /** * set a image resource * * @param string $image * @return boolean */ function setImage($image) { if(file_exists($image) && is_file($image)) { $this->imageInfo = getimagesize($image); $img_mime = strtolower($this->imageInfo['mime']); if(!in_array($img_mime, $this->enableTypes)) { exit('系统不能操作这种图片类型.'); } switch ($img_mime) { case 'image/gif': $link = imagecreatefromgif($image); $this->createFunc = 'imagegif'; $this->imageType = 'gif'; break; case 'image/jpeg': case 'image/jpg': $link = imagecreatefromjpeg($image); $this->createFunc = 'imagejpeg'; $this->imageType = 'jpeg'; break; case 'image/png': $link = imagecreatefrompng($image); $this->createFunc = 'imagepng'; $this->imageType = 'png'; break; default: $link = 'unknow'; $this->imageType = 'unknow'; break; } if($link !== 'unknow') { $this->imageResource = $link; } else { exit('这种图片类型不能改变尺寸.'); } unset($link); return true; } else { return false; } } /** * set header * */ function setHeader() { switch ($this->imageType) { case 'gif': header('content-type:image/gif'); break; case 'jpeg': header('content-type:image/jpeg'); break; case 'png': header('content-type:image/png'); break; default: exit('Can not set header.'); break; } return true; } /** * change the image size * * @param int $width * @param int $height * @return boolean */ function changeSize($width, $height = -1) { if(!is_resource($this->imageResource)) { exit('不能改变图片的尺寸,可能是你没有设置图片来源.'); } $s_width = $this->imageInfo[0]; $s_height = $this->imageInfo[1]; $width = intval($width); $height = intval($height); if($width <= 0) exit('图片宽度必须大于零.'); if($height <= 0) { $height = ($s_height / $s_width) * $width; } $this->target = imagecreatetruecolor($width, $height); if(@imagecopyresized($this->target, $this->imageResource, 0, 0, 0, 0, $width, $height, $s_width, $s_height)) return true; else return false; } /** * Add watermark * * @param string $image * @param int $app */ function addWatermark($image, $app = 50) { if(file_exists($image) && is_file($image)) { $s_info = getimagesize($image); } else { exit($image . '文件不存在.'); } $r_width = $s_info[0]; $r_height = $s_info[1]; if($r_width > $this->imageInfo[0]) exit('水印图片必须小于目标图片'); if($r_height > $this->imageInfo[1]) exit('水印图片必须小于目标图片'); switch ($s_info['mime']) { case 'image/gif': $resource = imagecreatefromgif($image); break; case 'image/jpeg': case 'image/jpg': $resource = imagecreatefromjpeg($image); break; case 'image/png': $resource = imagecreatefrompng($image); break; default: exit($s_info['mime'] .'类型不能作为水印来源.'); break; } $this->target = &$this->imageResource; imagecopymerge($this->target, $resource, $this->imageInfo[0] - $r_width - 5, $this->imageInfo[1] - $r_height - 5, 0,0 ,$r_width, $r_height, $app); imagedestroy($resource); unset($resource); } /** * create image * * @param string $name * @return boolean */ function create($name = NULL) { $function = $this->createFunc; if($this->target != NULL && is_resource($this->target)) { if($name != NULL) { $function($this->target, $name); } else { $function($this->target); } return true; } else if($this->imageResource != NULL && is_resource($this->imageResource)) { if($name != NULL) { $function($this->imageResource, $name); } else { $function($this->imageResource); } return true; } else { exit('不能创建图片,原因可能是没有设置图片来源.'); } } /** * free resource * */ function free() { if(is_resource($this->imageResource)) { @imagedestroy($this->imageResource); } if(is_resource($this->target)) { @imagedestroy($this->target); } } } ?>
|
|
|
|