PHP上传图片进行等比缩放可增加水印功能_php教程-查字典教程网
PHP上传图片进行等比缩放可增加水印功能
PHP上传图片进行等比缩放可增加水印功能
发布时间:2016-12-29 来源:查字典编辑
摘要:啥也不说,直接上代码,大家可以自行添加增加水印功能:复制代码代码如下:

啥也不说,直接上代码,大家可以自行添加增加水印功能:

复制代码 代码如下:

<?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;

}

相关阅读
推荐文章
猜你喜欢
附近的人在看
推荐阅读
拓展阅读
  • 大家都在看
  • 小编推荐
  • 猜你喜欢
  • 最新php教程学习
    热门php教程学习
    编程开发子分类