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

2015-01-24信息快讯网

简单地写了一个PHP的图片上传,可以支持jpg、png、gif等格式的图片,如果你想支持更多的格式,比如bmp,可以自己扩充。不是面向对象的,在这里简单记录下,以便以后取用

此处一次支持上传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生成Gif图片验证码
php中jpgraph类库的使用介绍
PHP之生成GIF动画的实现方法
setcookie中Cannot modify header information-headers already sent by错误的解决方法详解
Zend的Registry机制的使用说明
基于ubuntu下nginx+php+mysql安装配置的具体操作步骤
基于magic_quotes_gpc与magic_quotes_runtime的区别与使用介绍
关于Iframe如何跨域访问Cookie和Session的解决方法
PHP If Else(elsefi) 语句
浅谈apache和nginx的rewrite的区别
php加水印的代码(支持半透明透明打水印,支持png透明背景)
nginx+php-fpm配置文件的组织结构介绍
smarty巧妙处理iframe中内容页的代码
php+iframe实现隐藏无刷新上传文件
PHP读取txt文件的内容并赋值给数组的代码
PHP安全防范技巧分享
提示Trying to clone an uncloneable object of class Imagic的解决
php环境配置之CGI、FastCGI、PHP-CGI、PHP-FPM、Spawn-FCGI比较?
php利用iframe实现无刷新文件上传功能的代码
php中使用Imagick实现图像直方图的实现代码
php中将图片gif,jpg或mysql longblob或blob字段值转换成16进制字符串
JpGraph php柱状图使用介绍
php报表之jpgraph柱状图实例代码
PHP IF ELSE简化/三元一次式的使用
PHP-CGI进程CPU 100% 与 file_get_contents 函数的关系分析
php array_intersect比array_diff快(附详细的使用说明)
PHP session有效期session.gc_maxlifetime
php 生成文字png图片的代码
完美实现GIF动画缩略图的php代码
检测png图片是否完整的php代码
©2014-2024 dbsqp.com