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调用三种数据库的方法(2)
Oct 09 PHP
ASP和PHP都是可以删除自身的
Apr 09 PHP
PHP session有效期问题
Apr 26 PHP
php读取xml实例代码
Jan 28 PHP
php查看请求头信息获取远程图片大小的方法分享
Dec 25 PHP
php实现把url转换迅雷thunder资源下载地址的方法
Nov 07 PHP
php简单防盗链实现方法
Jul 29 PHP
php实现微信公众号无限群发
Oct 11 PHP
php结合web uploader插件实现分片上传文件
May 10 PHP
yii2.0整合阿里云oss上传单个文件的示例
Sep 19 PHP
PHP简单实现防止SQL注入的方法
Mar 13 PHP
PHP实现爬虫爬取图片代码实例
Mar 03 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实现简单搜歌的方法
2015/07/28 PHP
PHP mysqli事务操作常用方法分析
2017/07/22 PHP
JavaScript 类型的包装对象(Typed Wrappers)
2011/10/27 Javascript
JavaScript中的关键字&quot;VAR&quot;使用详解 分享
2013/07/31 Javascript
javascript监听鼠标滚轮事件浅析
2014/06/05 Javascript
原生javascript实现获取指定元素下所有后代元素的方法
2014/10/28 Javascript
jquery获取节点名称
2015/04/26 Javascript
javascript中 try catch用法
2015/08/16 Javascript
浅谈如何实现easyui的datebox格式化
2016/06/12 Javascript
BOM系列第三篇之定时器应用(时钟、倒计时、秒表和闹钟)
2016/08/17 Javascript
JavaScript之面向对象_动力节点Java学院整理
2017/06/29 Javascript
详解Puppeteer 入门教程
2018/05/09 Javascript
利用JS实现一个同Excel表现的智能填充算法
2018/08/13 Javascript
vue router带参数页面刷新或回退参数消失的解决方法
2019/02/27 Javascript
vue表单中遍历表单操作按钮的显示隐藏示例
2019/10/30 Javascript
python实现爬虫统计学校BBS男女比例之多线程爬虫(二)
2015/12/31 Python
利用python模拟sql语句对员工表格进行增删改查
2017/07/05 Python
基于pandas数据样本行列选取的方法
2018/04/20 Python
十行代码使用Python写一个USB病毒
2019/06/21 Python
对numpy下的轴交换transpose和swapaxes的示例解读
2019/06/26 Python
python+logging+yaml实现日志分割
2019/07/22 Python
基于Python实现签到脚本过程解析
2019/10/25 Python
python pygame实现球球大作战
2019/11/25 Python
Python面向对象之多态原理与用法案例分析
2019/12/30 Python
如何在Django中使用聚合的实现示例
2020/03/23 Python
使用 django orm 写 exists 条件过滤实例
2020/05/20 Python
css3翻牌翻数字的示例代码
2020/02/07 HTML / CSS
本科生学习总结的自我评价
2013/10/02 职场文书
计算机专业毕业生自我鉴定
2014/01/16 职场文书
合同权益转让协议书模板
2014/11/18 职场文书
董存瑞观后感
2015/06/11 职场文书
会议新闻稿
2015/07/17 职场文书
2019最新婚庆对联集锦!
2019/07/10 职场文书
创业计划书之餐饮
2019/09/02 职场文书
深入讲解数据库中Decimal类型的使用以及实现方法
2022/02/15 MySQL
mysql使用instr达到in(字符串)的效果
2022/04/03 MySQL