PHP上传图片进行等比缩放可增加水印功能

啥也不说,直接上代码,大家可以自行添加增加水印功能
<div class="codetitle"><a style="CURSOR: pointer" data="49499" class="copybut" id="copybut49499" onclick="doCopy('code49499')"> 代码如下:

<div class="codebody" id="code49499">
<?PHP
/

@author zhao jinhan
@date 2014年1月13日11:54:30
@email xb_zjh@126.com

/
header('Content-type:text/html; charset=utf-8');
//定义缩略图的宽高
define('THUMB_WIDTH',300);
define('THUMB_HEIGHT',300); /

重新生成上传文件
@return string
@author zhao jinhan

*/
function _file_type($filetype = null){
switch($filetype)
{
case "image/jpeg":
$fileextname = "jpg";
break;
case "image/gif":
$fileextname = "gif";
break;
case "image/png":
$fileextname = "png";
break;
default:
$fileextname = false;
break;
}
return $fileextname?date('YmdHis',time()).'.'.$fileextname:false;
} /*

@param string $filename
@param string $width
@param string $height
@param string $quality
@param string $savepath
@return boolean
/
function _make_thumb($filename='',$width=THUMB_WIDTH,$height=THUMB_HEIGHT,$savepath='./upload'){
if(file_exists($filename)){
//上传图片的尺寸
$imagesize=getimagesize($filename);
$imagewidth=$imagesize[0];
$imageheight=$imagesize[1];
$mime = $imagesize['mime'];
//宽高比例
$ratio = $imagewidth/$imageheight; //新建一个背景图片
$bgimg = imagecreatetruecolor($width,$height);
$white = imagecolorallocate($bgimg,255,255);
//填充背景色为白色
imagefill($bgimg,$white);
if($mime == 'image/gif'){
$im = @imagecreatefromgif($filename); /
Attempt to open /
$outfun = 'imagegif';
}elseif($mime == 'image/png'){
$im = @imagecreatefrompng($filename); /
Attempt to open /
$outfun = 'imagepng';
}else{
$im = @imagecreatefromjpeg($filename); /
Attempt to open /
$outfun = 'imagejpeg';
} if($ratio > 1){
//宽度较大
if($imagewidth > $width){
//缩放图片到背景图片
$new_width = $width;
$new_height = ($width
$imageheight)/$imagewidth;
$bg_y = ceil(abs(($height-$new_height)/2));
imagecopyresampled($bgimg,$im,$bg_y,$new_width,$new_height,$imagewidth,$imageheight);
}else{
//复制图片到背景图片
$copy = true;
}
}else{
//高度较大
if($imageheight > $height){
//缩放图片
$new_height = $height;
$new_width = ($height$imagewidth)/$imageheight;
$bg_x = ceil(($width-$new_width)/2);
imagecopyresampled($bgimg,$bg_x,$imageheight);
}else{
//复制图片到背景图片
$copy = true;
}
}
if($copy){
//复制图片到背景图片
$bg_x = ceil(($width-$imagewidth)/2);
$bg_y = ceil(($height-$imageheight)/2);
imagecopy($bgimg,$imageheight);
}
$ext = _file_type($mime);
$outfun($bgimg,$savepath.'/'.$ext);
imagedestroy($bgimg);
return $savepath.'/'.$ext;
}else{
return false;
}
} if($_POST){
$size = $_POST['size']?strtoupper(trim($_POST['size'])):'2M';
$imgsize = $_FILES['img']['size']?$_FILES['img']['size']/(1024
1024):0;
$imgwidth = $imgheight = $_POST['width-height']?intval($_POST['width-height']):300;
//自定定义文件上传大小
ini_set('upload_max_filesize',$size);
$mathsize = str_replace('M','',$size);
if($imgsize>$mathsize){
echo "图片大小不得超过{$size}!";
return;
}
if($file_name = _file_type($_FILES['img']['type'])){
if($_FILES['img']['error'] == UPLOAD_ERR_OK){
$savepath = 'upload/';
if(!is_dir($savepath)){
mkdir($savepath,0644);
}
//生成缩略图
$thumb_file = _make_thumb($_FILES['img']['tmp_name'],$imgwidth,$imgheight,$savepath);
//move_uploaded_file($_FILES['img']['tmp_name'],$savepath.$file_name);
echo "生成后的图片为:";
}else{
echo $_FILES['img']['error'];
return;
}
}else{
echo "图片格式不正确,请上传jpg,gif,png的格式!";
return;
} }else{
echo <<<EOT
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">


<Meta http-equiv="Content-Type" content="text/html; charset=utf-8">
缩放<a href="https://www.jb51.cc/tag/tupian/" target="_blank" class="keywords">图片</a>保存成正方形


<form action="" method="POST" enctype="multipart/form-data">
















EOT;
}

相关文章

统一支付是JSAPI/NATIVE/APP各种支付场景下生成支付订单,返...
统一支付是JSAPI/NATIVE/APP各种支付场景下生成支付订单,返...
前言 之前做了微信登录,所以总结一下微信授权登录并获取用户...
FastAdmin是我第一个接触的后台管理系统框架。FastAdmin是一...
之前公司需要一个内部的通讯软件,就叫我做一个。通讯软件嘛...
统一支付是JSAPI/NATIVE/APP各种支付场景下生成支付订单,返...