欢迎您访问我爱IT技术网,今天小编为你分享的编程技术是:【php可以生成缩略图和水印图的类】,下面是详细的分享!
php可以生成缩略图和水印图的类
用法:
(1)改变图片大小
| 以下为引用的内容:
require_once('image.php'); |
(2)添加水印
| 以下为引用的内容:
require_once('image.php'); |
<?php
class Image {
var $imageResource=NULL;
var $target=NULL;
var $enableTypes=array();
var $imageInfo=array();
var $createFunc='';
var $imageType=NULL;
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);
}
}
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;
}
}
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;
}
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;
}
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);
}
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('不能创建图片,原因可能是没有设置图片来源.');
}
}
function free() {
if(is_resource($this->imageResource)) {
@imagedestroy($this->imageResource);
}
if(is_resource($this->target)) {
@imagedestroy($this->target);
}
}
}
?>
以上所分享的是关于php可以生成缩略图和水印图的类,下面是编辑为你推荐的有价值的用户互动:
相关问题:谁有PHP生成水印和缩略图的类?
答:无分无程序 >>详细
相关问题:php上传图片自动生成缩略图
答:这个用 GD 库解决吧! 得到客户上传的图片, 再用GD库引入图片 , 再进行等比例缩小处理 , 就得到缩略图了 . >>详细
相关问题:php上传图片生成三张缩略图,大中小。帮忙看一下
答:public function disposeImgAction($tmp_path, $dst_w, $file_path, $file_name) { $arr=getimagesize($tmp_path); $src_w=$arr[0]; $src_h=$arr[1]; $type=$arr[2]; switch($type){ case 1:$src_im=imagecreatefromgif($tmp_path);break; case ... >>详细
- 评论列表(网友评论仅供网友表达个人看法,并不表明本站同意其观点或证实其描述)
-
