PHP支持多种格式图片上传(支持jpg、png、gif)


Posted in PHP onNovember 03, 2011

此处一次支持上传2个图片,上传后生成原图和质量较差的图,原图用于保存质量高的图片,质量差的图用于网页显示。
PHP Code

<?php 
include_once("db.php"); 
include_once("dbinfo.php"); 
$connector = new nmdb($host, $username, $password); 
$connector -> select_db($database); 
$work_group = check_input($_POST['work_group']); 
$name = check_input($_POST['name']); 
$tel = check_input($_POST['tel']); 
$id_card = check_input($_POST['id_card']); 
$work_name = check_input($_POST['work_name']); 
$place = check_input($_POST['place']); 
$work1 = check_input($_POST['work1']); 
date_default_timezone_set('PRC'); 
$date = date("Y-m-d H:i:s"); 
$quality = 100; 
$quality2 = 70; 
$quality_png = 9; 
$quality2_png = 7; 
if(isset($_FILES['work1']) && $_FILES['work1']['error']==0) 
{ 
$size = getimagesize($_FILES['work1']['tmp_name']); 
$original = $_FILES['work1']['tmp_name']; 
$type = $_FILES['work1']['type']; 
//echo $type; 
$target_name = date('YmdHis').'_'.preg_replace('`[^a-z0-9-_.]`i','',$_FILES['work1']['name']); 
$work1 = $target_name; 
$target = dirname(__FILE__).'/uploads/'.$target_name; 
switch($type) 
{ 
case "image/jpeg": 
$resultImage = imagecreatefromjpeg($original); 
imagejpeg($resultImage, $target, $quality); 
break; 
case "image/png": 
$resultImage = imagecreatefrompng($original); 
imagepng($resultImage, $target, $quality_png); 
break; 
case "image/gif": 
$resultImage = imagecreatefromgif($original); 
imagegif($resultImage, $target, $quality); 
break; 
default : 
die("不支持此文件类型"); 
exit; 
} 
$work1_small = $target_name; 
$target = dirname(__FILE__).'/uploads/small/'.$target_name; 
switch($type) 
{ 
case "image/jpeg": 
$resultImage = imagecreatefromjpeg($original); 
imagejpeg($resultImage, $target, $quality2); 
break; 
case "image/png": 
$resultImage = imagecreatefrompng($original); 
imagepng($resultImage, $target, $quality2_png); 
break; 
case "image/gif": 
$resultImage = imagecreatefromgif($original); 
imagegif($resultImage, $target, $quality2); 
break; 
default : 
die("不支持此文件类型"); 
exit; 
} 
} 
if(isset($_FILES['work2']) && $_FILES['work2']['error']==0) 
{ 
$size = getimagesize($_FILES['work2']['tmp_name']); 
$original = $_FILES['work2']['tmp_name']; 
$type = $_FILES['work2']['type']; 
$target_name = date('YmdHis').'_'.preg_replace('`[^a-z0-9-_.]`i','',$_FILES['work2']['name']); 
$work2 = $target_name; 
$target = dirname(__FILE__).'/uploads/'.$target_name; 
switch($type) 
{ 
case "image/jpeg": 
$resultImage = imagecreatefromjpeg($original); 
imagejpeg($resultImage, $target, $quality); 
break; 
case "image/png": 
$resultImage = imagecreatefrompng($original); 
imagepng($resultImage, $target, $quality_png); 
break; 
case "image/gif": 
$resultImage = imagecreatefromgif($original); 
imagegif($resultImage, $target, $quality); 
break; 
default : 
die("不支持此文件类型"); 
exit; 
} 
$work2_small = $target_name; 
$target = dirname(__FILE__).'/uploads/small/'.$target_name; 
switch($type) 
{ 
case "image/jpeg": 
$resultImage = imagecreatefromjpeg($original); 
imagejpeg($resultImage, $target, $quality2); 
break; 
case "image/png": 
$resultImage = imagecreatefrompng($original); 
imagepng($resultImage, $target, $quality2_png); 
break; 
case "image/gif": 
$resultImage = imagecreatefromgif($original); 
imagegif($resultImage, $target, $quality2); 
break; 
default : 
die("不支持此文件类型"); 
exit; 
} 
} 
$sql="insert into photo(work_group,name,tel,id_card,work_name,place,work,work_small,date) values('$work_group','$name','$tel','$id_card','$work_name','$place','$work1','$work1_small','$date')"; 
//echo $sql; 
$result = $connector -> query($sql) or die(mysql_error()); 
if($work2 != "" && $work2_small != null) 
{ 
$sql2="insert into photo(work_group,name,tel,id_card,work_name,place,work,work_small,date) values('$work_group','$name','$tel','$id_card','$work_name','$place','$work2','$work2_small','$date')"; 
$result2 = $connector -> query($sql2) or die(mysql_error()); 
} 
$connector -> close($connector); 
$page="../upload.php"; 
echo "<script>alert('上传成功!'); window.location = \"".$page."\";</script>"; 
?>

有些问题需要说明下:
JPEG图像生成的图像的质量的是一个范围从0(最低质量,最小的文件大小)到100(最高质量,最大文件大小)。而ImagePNG生成图像的质量范围从0到9的,传入的这个范围以外的参数则该函数不会工作。
判断上传文件的类型,$type = $_FILES['work1']['type'];。
创建各种格式的图片可以使用这些函数:imagecreatefromjpeg()、imagecreatefrompng()、imagecreatefromgif()。
PHP 相关文章推荐
PHP MVC模式在网站架构中的实现分析
Mar 04 PHP
php 输出双引号&quot;与单引号'的方法
May 09 PHP
php读取文件内容的几种方法详解
Jun 26 PHP
PHP7.0版本备注
Jul 23 PHP
Yii2中cookie用法示例分析
Jul 18 PHP
PHP数据库操作二:memcache用法分析
Aug 16 PHP
PHP将整数数字转换为罗马数字实例分享
Mar 17 PHP
PHP7内核CGI与FastCGI详解
Apr 14 PHP
PHP实现的操作数组类库定义与用法示例
May 24 PHP
PHP Beanstalkd消息队列的安装与使用方法实例详解
Feb 21 PHP
PHP文件操作简单介绍及函数汇总
Dec 11 PHP
PHP安全防范技巧分享
Nov 03 #PHP
防止本地用户用fsockopen DDOS攻击对策
Nov 02 #PHP
PHP隐形一句话后门,和ThinkPHP框架加密码程序(base64_decode)
Nov 02 #PHP
php数组函数序列之krsort()- 对数组的元素键名进行降序排序,保持索引关系
Nov 02 #PHP
php数组函数序列之asort() - 对数组的元素值进行升序排序,保持索引关系
Nov 02 #PHP
php数组函数序列之sort() 对数组的元素值进行升序排序
Nov 02 #PHP
php数组函数序列之ksort()对数组的元素键名进行升序排序,保持索引关系
Nov 02 #PHP
You might like
PHP分页显示制作详细讲解
2006/10/09 PHP
一个自定义位数的php多用户计数器代码
2007/03/11 PHP
php+ajax实现文章自动保存的方法
2014/12/30 PHP
PHP面向对象程序设计子类扩展父类(子类重新载入父类)操作详解
2019/06/14 PHP
PHP 对象继承原理与简单用法示例
2020/04/21 PHP
根据分辨率不同,调用不同的css文件
2006/07/07 Javascript
出现“不能执行已释放的Script代码”错误的原因及解决办法
2007/08/29 Javascript
jquery绑定事件不生效的解决方法
2014/02/11 Javascript
让alert不出现弹窗的两种方法
2014/05/18 Javascript
深入理解JavaScript系列(22):S.O.L.I.D五大原则之依赖倒置原则DIP详解
2015/03/05 Javascript
D3.js实现雷达图的方法详解
2016/09/22 Javascript
jQuery插件ContextMenu自定义图标
2017/03/15 Javascript
ReactJs实现树形结构的数据显示的组件的示例
2017/08/18 Javascript
setTimeout时间设置为0详细解析
2018/03/13 Javascript
NodeJS模块与ES6模块系统语法及注意点详解
2019/01/04 NodeJs
vue实现拖拽的简单案例 不超出可视区域
2019/07/25 Javascript
[54:47]Liquid vs VP Supermajor决赛 BO 第五场 6.10
2018/07/05 DOTA
python实现下载指定网址所有图片的方法
2015/08/08 Python
python+opencv实现动态物体识别
2018/01/09 Python
pygame游戏之旅 添加游戏界面按键图形
2018/11/20 Python
python实现flappy bird小游戏
2018/12/24 Python
基于python的docx模块处理word和WPS的docx格式文件方式
2020/02/13 Python
python matplotlib 绘图 和 dpi对应关系详解
2020/03/14 Python
pytorch Dataset,DataLoader产生自定义的训练数据案例
2021/03/03 Python
英国手机零售商:Carphone Warehouse
2018/06/06 全球购物
Hunkemöller瑞士网上商店:欧洲最大的内衣品牌之一
2018/12/03 全球购物
Groupon法国官方网站:特卖和网上购物高达-70%
2019/09/02 全球购物
Gerry Weber德国官网:优质女性时装,德国最大的时装公司之一
2019/11/02 全球购物
什么是.net的Remoting技术
2016/07/08 面试题
学校门卫工作职责
2013/12/07 职场文书
端午节演讲稿
2014/05/23 职场文书
驾驶员安全责任书
2014/07/22 职场文书
学习保证书
2015/01/17 职场文书
2015年清明节网上祭英烈活动总结
2015/03/26 职场文书
公司文体活动总结
2015/05/07 职场文书
如何用RabbitMQ和Swoole实现一个异步任务系统
2021/05/29 PHP