PHP处理表单上传的图片尺寸
- 2015-11-18 17:54:51
- 幻音い
- 7034
温馨提示: 这篇文章于3249天前编写,现在可能不再适用或落后.
制作网站的时候肯定会用到图片,那么一个正常的网站(前端+后台)那肯定会有图片了,图片难免会有大图或小图,当别人访问你网站的时候首页比如有4张幻灯片图片,每张都1M左右也就意味着别人访问网站首先需要花费4M的流量进入网站,而你网站服务器带宽如果很慢那就注定了别人访问网站的速度,一个优秀的网站必定会有首页图片的缩略图,不然别人访问网站就会非常慢!
PHP有专用的图片处理函数,PHP的GD库就能够帮助我们制作图片、打水印、获取图像信息、制作登陆验证码等等强大的功能。
PHPAPI文档中明确的给出了很多图片处理函数,这里我们对于处理图片尺寸只需要几个即可。
上图是使用表单上传图片后进行处理后的自定义尺寸图片。
HTML代码只需要一个file类型表单和一个submit按钮即可,form的enctype类型在PHP中明确要求使用multipart/form-data
HTML:
<form action="" method="post" enctype="multipart/form-data">
<input type="file" name="img"/>
<input type="submit" value="上传" name="upload"/>
</form>
```PHP处理图片:
<?php
if(@$_POST['upload']) {
if (is_uploaded_file($_FILES['img']['tmp_name'])) {//判断是否是https post上传
$upimg = $_FILES['img']['tmp_name'];
$type = $_FILES['img']["type"];
$name = $_FILES['img']['name'];
switch ($type) {//判断上传的图片类型
case 'image/jpeg':
$upload = 1;
break;
case 'image/png':
$upload = 1;
break;
case 'image/bmp':
$upload = 1;
break;
case 'image/gif':
$upload = 1;
break;
default:
echo "上传图片失败,请检查文件类型,当前持:Jpg,Png,Bmp,Gif格式!";
}
if (@$upload == 1) {//判断是否是上面4个类型中的其中一个
$path = 'upimg/' . $name;
move_uploaded_file($upimg, $path);
//上传完成后调用处理图片自定义函数
user_avart($path, $name, $type);
}
}
}
function user_avart($path,$name,$type){
$img = $path;
$width = 100;//设置新图片的宽度及高度,如果不用固定宽度高度,可以判断当前高度宽度来设置
$height= 100;
list($width_max, $height_max) = getimagesize($img);//getimagesize用list直接获取图片信息的数组0和1的位置数据
$images = imagecreatetruecolor($width,$height);//新建真彩图片
switch($type) {//判断图片类型
//开始将刚才上传的图片创建一张(必须确保刚才上传的图片已经处于服务器文件夹中)
case 'image/jpeg':
$im = imagecreatefromjpeg($path);
break;
//png格式需要注意透明度必须用imagealphablending和imagesavealpha保留,否则会出现黑色背景作为透明背景
case 'image/png':
$im = imagecreatefrompng($path);
imagealphablending($images, false);
imagesavealpha($images, true);
break;
case 'image/gif':
$im = imagecreatefromgif($path);
break;
case 'image/bmp':
$im = imagecreatefromwbmp($path);
break;
default:
echo "错误!";
}
//拷贝图片至新图片 参数:
//新图片->源图片->新图片开始位置X->新图片位置Y->源图片X->源图片Y->新图片宽度->新图片高度->源图片高度->源图片宽度
imagecopyresampled($images,$im,0,0,0,0,$width,$height,$width_max,$height_max);
switch($type) {//再次判断类型
//输出图片到upimg/目录下 jpeg类型可以有第三个参数: 类型为整数,设置清晰度
case 'image/jpeg':
imagejpeg($images, "upimg/avart_" . $name);
break;
case 'image/png':
imagepng($images, "upimg/avart_" . $name);
break;
case 'image/gif':
imagegif($images, "upimg/avart_" . $name);
break;
case 'image/bmp':
imagewbmp($images, "upimg/avart_" . $name);
break;
default:
echo "错误!";
}
imagedestroy($images);//关闭图片内存
}
?>
```
写完上面代码,我拿到编辑器里面是可以实现的,以上支持4种图片转换,输出的图片类型和上传的类型相同 图片尺寸函数很简单,以上处理是4种常用图片的处理尺寸方法
阁下需要登录后才可以查看评论哦~