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 相关文章推荐
Banner程序
Oct 09 PHP
php preg_match_all结合str_replace替换内容中所有img
Oct 11 PHP
php 来访国内外IP判断代码并实现页面跳转
Dec 18 PHP
PHP入门学习笔记之一
Oct 12 PHP
php正则表达式(regar expression)
Sep 10 PHP
php数据结构与算法(PHP描述) 查找与二分法查找
Jun 21 PHP
php 中文字符串首字母的获取函数分享
Nov 04 PHP
php 启动报错如何解决
Jan 17 PHP
php版小黄鸡simsimi聊天机器人接口分享
Jan 26 PHP
thinkphp实现发送邮件密码找回功能实例
Dec 01 PHP
ThinkPHP5 验证器的具体使用
May 31 PHP
Laravel 解决composer相关操作提示php相关异常的问题
Oct 23 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的FTP学习(一)[转自奥索]
2006/10/09 PHP
php版微信公众账号第三方管理工具开发简明教程
2016/09/23 PHP
jQuery 第二课 操作包装集元素代码
2010/03/14 Javascript
ajax异步刷新实现更新数据库
2012/12/03 Javascript
jquery简单实现滚动条下拉DIV固定在头部不动
2013/11/25 Javascript
每天一篇javascript学习小结(Function对象)
2015/11/16 Javascript
浅析jQuery中使用$所引发的问题
2016/05/29 Javascript
javascript中使用未定义变量或值的情况分析
2016/07/19 Javascript
js中url对象化管理分析
2017/12/29 Javascript
vue-cli常用设置总结
2018/02/24 Javascript
解决vue处理axios post请求传参的问题
2018/03/05 Javascript
详解如何在vscode里面调试js和node.js的方法步骤
2018/12/24 Javascript
js实现上传图片并显示图片名称
2019/12/18 Javascript
关于Js中new操作符的作用详解
2021/02/21 Javascript
Python实现树莓派WiFi断线自动重连的实例代码
2017/03/16 Python
matplotlib绘制符合论文要求的图片实例(必看篇)
2017/06/02 Python
利用python模拟sql语句对员工表格进行增删改查
2017/07/05 Python
python实现朴素贝叶斯分类器
2018/03/28 Python
python利用Tesseract识别验证码的方法示例
2019/01/21 Python
python yield和Generator函数用法详解
2020/02/10 Python
宝拉珍选澳大利亚官方购物网站:Paula’s Choice澳大利亚
2016/09/13 全球购物
电子狗项圈:eDog Australia
2019/12/04 全球购物
市场部专员岗位职责
2013/11/30 职场文书
4s店机修工岗位职责
2013/12/20 职场文书
广告业务员岗位职责
2014/02/06 职场文书
应届毕业生通用的自荐书范文
2014/02/07 职场文书
大学生求职工作的自我评价
2014/02/13 职场文书
六一儿童节演讲稿
2014/05/23 职场文书
教师党员自我评价范文
2015/03/04 职场文书
楚门的世界观后感
2015/06/03 职场文书
钢铁是怎样炼成的读书笔记
2015/06/29 职场文书
2016教师校本研修心得体会
2016/01/08 职场文书
公司要求试用期员工提交“述职报告”,该怎么写?
2019/07/17 职场文书
python数据库批量插入数据的实现(executemany的使用)
2021/04/30 Python
Django Paginator分页器的使用示例
2021/06/23 Python
Java中try catch处理异常示例
2021/12/06 Java/Android