啥也不说,直接上代码,大家可以自行添加增加水印功能:
<?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, 255);
//填充背景色为白色
imagefill($bgimg,0,0,$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, 0, $bg_y, 0, 0, $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, $im, $bg_x, 0, 0, 0, $new_width, $new_height, $imagewidth, $imageheight);
}else{
//复制图片到背景图片上
$copy = true;
}
}
if($copy){
//复制图片到背景图片上
$bg_x = ceil(($width-$imagewidth)/2);
$bg_y = ceil(($height-$imageheight)/2);
imagecopy($bgimg, $im, $bg_x, $bg_y, 0, 0, $imagewidth, $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 \"生成后的图片为:<img src=\'\".$thumb_file.\"\' />\";
}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\">
<html>
<head>
<meta http-equiv=\"Content-Type\" content=\"text/html; charset=utf-8\">
<title>缩放图片保存成正方形</title>
</head>
<body>
<form action=\"\" method=\"POST\" enctype=\"multipart/form-data\">
<div>
<label>上传一张图片:</label>
<input type=\"file\" name=\"img\" />
</div>
<div>
<label>生成缩略图的宽高(单位px):</label>
<input type=\"text\" name=\"width-height\" value=\"300\" />
</div>
<div>
<label>文件大小上限:</label>
<input type=\"text\" name=\"size\" value=\"2M\" />
</div>
<div><input type=\"submit\" name=\"submit\" value=\"提交\" /></div>
</form>
</body>
</html>
EOT;
}