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 相关文章推荐
从C/C++迁移到PHP——判断字符类型的函数
Oct 09 PHP
php构造函数实例讲解
Nov 13 PHP
PHP中date与gmdate的区别及默认时区设置
May 12 PHP
PHP合并静态文件详解
Nov 14 PHP
php中字符查找函数strpos、strrchr与strpbrk用法
Nov 18 PHP
php 实现进制相互转换
Apr 07 PHP
CI框架中数据库操作函数$this-&gt;db-&gt;where()相关用法总结
May 17 PHP
Yii2增删改查之查询 where参数详细介绍
Aug 08 PHP
PHP入门教程之正则表达式基本用法实例详解(正则匹配,搜索,分割等)
Sep 11 PHP
php简单生成一组与多组随机字符串的方法
May 09 PHP
PHP实现防盗链的方法分析
Jul 25 PHP
php实现数字补零的方法总结
Sep 12 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操作MongoDB基础教程(连接、新增、修改、删除、查询)
2014/03/25 PHP
浅析PHP程序设计中的MVC编程思想
2014/07/28 PHP
PHP判断IP并转跳到相应城市分站的方法
2015/03/25 PHP
深入理解PHP变量的值类型和引用类型
2015/10/21 PHP
CodeIgniter连贯操作的底层原理分析
2016/05/17 PHP
CentOS 上搭建 PHP7 开发测试环境
2017/02/26 PHP
php多文件打包下载的实例代码
2017/07/12 PHP
PHP date()格式MySQL中插入datetime方法
2019/01/29 PHP
yii框架结合charjs实现统计30天数据的方法
2020/04/04 PHP
Javascript实例教程(19) 使用HoTMetal(3)
2006/12/23 Javascript
js 图片轮播(5张图片)
2008/12/30 Javascript
IE8 浏览器Cookie的处理
2009/01/31 Javascript
JavaScript QueryString解析类代码
2010/01/17 Javascript
一些老手都不一定知道的JavaScript技巧
2014/05/06 Javascript
用js代码和插件实现wordpress雪花飘落效果的四种方法
2014/12/15 Javascript
Javascript基础教程之while语句
2015/01/18 Javascript
js获取字符串字节数方法小结
2015/06/09 Javascript
jquery控制显示服务器生成的图片流
2015/08/04 Javascript
Bootstrap Search Suggest使用例子
2016/12/21 Javascript
在Vue组件化中利用axios处理ajax请求的使用方法
2017/08/25 Javascript
vue-cli开发环境实现跨域请求的方法
2018/04/07 Javascript
vue2.0使用v-for循环制作多级嵌套菜单栏
2018/06/25 Javascript
jQuery实现input输入框获取焦点与失去焦点时提示的消失与显示功能示例
2019/05/27 jQuery
了解重排与重绘
2019/05/29 Javascript
在vue-cli中引入lodash.js并使用详解
2019/11/13 Javascript
vue中keep-alive、activated的探讨和使用详解
2020/07/26 Javascript
Python isinstance函数介绍
2015/04/14 Python
Python爬虫包BeautifulSoup学习实例(五)
2018/06/17 Python
pyqt5 comboBox获得下标、文本和事件选中函数的方法
2019/06/14 Python
Finishline官网:美国一家领先的运动品牌鞋类、服装零售商
2016/07/20 全球购物
越南电子产品购物网站:FPT Shop
2017/12/02 全球购物
联想C++笔试题
2012/06/13 面试题
精细化工应届生求职信
2013/11/17 职场文书
幼儿园教研活动总结
2014/04/30 职场文书
幼儿教师年度个人总结
2015/02/05 职场文书
2015年大学生工作总结
2015/04/21 职场文书