Home > Backend Development > PHP Tutorial > PHP上传图片进行等比缩放可增加水印功能_PHP

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

WBOY
Release: 2016-06-01 11:57:31
Original
802 people have browsed it

啥也不说,直接上代码,大家可以自行添加增加水印功能:
复制代码 代码如下:
/**
*
* @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 "生成后的图片为:PHP上传图片进行等比缩放可增加水印功能_PHP";
}else{
echo $_FILES['img']['error'];
return;
}
}else{
echo "图片格式不正确,请上传jpg,gif,png的格式!";
return;
}



}else{
echo



缩放图片保存成正方形



















EOT;
}
Related labels:
source:php.cn
Statement of this Website
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template