最新下载
热门教程
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
php上传图片并生成缩位图代码
时间:2022-07-02 10:15:28 编辑:袖梨 来源:一聚教程网
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);
}
}
}
?>
相关文章
- 王者荣耀侦探能力大测试攻略 王者荣耀侦探能力大测试怎么过 11-22
- 无期迷途主线前瞻兑换码是什么 11-22
- 原神欧洛伦怎么培养 11-22
- 炉石传说网易云音乐联动怎么玩 11-22
- 永劫无间手游确幸转盘怎么样 11-22
- 无期迷途主线前瞻兑换码是什么 无期迷途主线前瞻直播兑换码介绍 11-22