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学习资料汇总与网址
Mar 16 PHP
php下intval()和(int)转换使用与区别
Jul 18 PHP
php入门学习知识点一 PHP与MYSql连接与查询
Jul 14 PHP
114啦源码(114la)不能生成地方房产和地方报刊问题4级页面0字节的解决方法
Jan 12 PHP
PHP 第三节 变量介绍
Apr 28 PHP
php cli 小技巧
Jun 03 PHP
php全角字符转换为半角函数
Feb 07 PHP
PHP扩展框架之Yaf框架的安装与使用
May 18 PHP
详谈php静态方法及普通方法的区别
Oct 04 PHP
PHP 中使用ajax时一些常见错误总结整理
Feb 27 PHP
php生成word并下载代码实例
Mar 15 PHP
PHP FileSystem 文件系统常用api整理总结
Jul 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
比特率,大家看看这个就不用收音机音质去比MP3音质了
2021/03/01 无线电
PHP连接MSSQL2008/2005数据库(SQLSRV)配置实例
2014/10/22 PHP
短信提示使用 特效
2007/01/19 Javascript
jQuery的实现原理的模拟代码 -2 数据部分
2010/08/01 Javascript
Jquery 获取checkbox的checked问题
2011/11/16 Javascript
js时间日期和毫秒的相互转换
2013/02/22 Javascript
javascript与css3动画结合使用小结
2015/03/11 Javascript
手机开发必备技巧:javascript及CSS功能代码分享
2015/05/25 Javascript
nodejs简单实现操作arduino
2016/09/25 NodeJs
详解Javascript中的原型OOP
2016/10/12 Javascript
js判断手机号是否正确并返回的实现代码
2017/01/17 Javascript
10分钟学会js处理json的常用方法
2020/12/06 Javascript
一行JavaScript代码如何实现瀑布流布局
2020/12/11 Javascript
[01:24:09]Ti4 冒泡赛第二轮DK vs C9 1
2014/07/14 DOTA
在Python中使用__slots__方法的详细教程
2015/04/28 Python
python中os模块详解
2016/10/14 Python
Python实现简易过滤删除数字的方法小结
2019/01/09 Python
Python列表元素常见操作简单示例
2019/10/25 Python
python制作朋友圈九宫格图片
2019/11/03 Python
Python Opencv图像处理基本操作代码详解
2020/08/31 Python
Python pickle模块常用方法代码实例
2020/10/10 Python
python两种获取剪贴板内容的方法
2020/11/06 Python
CSS3 @font-face属性使用指南
2014/12/12 HTML / CSS
idealfit英国:世界领先的女性健身用品和运动衣物品牌
2017/11/25 全球购物
中国领先的汽车保养服务平台:途虎养车
2019/10/18 全球购物
What is EJB
2016/07/22 面试题
大学活动策划书范文
2014/01/10 职场文书
保险公司晨会主持词
2014/03/22 职场文书
合作经营协议书范本
2014/09/16 职场文书
乡镇群众路线专项整治方案
2014/11/03 职场文书
营业用房租赁协议书
2014/11/26 职场文书
车辆管理制度范本
2015/08/05 职场文书
新员工入职感想
2015/08/07 职场文书
Python-OpenCV教程之图像的位运算详解
2021/06/21 Python
Python装饰器的练习题
2021/11/23 Python
vue3种table表格选项个数的控制方法
2022/04/14 Vue.js