ホームページ  >  記事  >  バックエンド開発  >  PHP支持多种格式图片上传(支持jpg、png、gif)_php技巧

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

PHP中文网
PHP中文网オリジナル
2016-05-17 09:14:471422ブラウズ

此处一次支持上传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[&#39;work_group&#39;]); 
$name = check_input($_POST[&#39;name&#39;]); 
$tel = check_input($_POST[&#39;tel&#39;]); 
$id_card = check_input($_POST[&#39;id_card&#39;]); 
$work_name = check_input($_POST[&#39;work_name&#39;]); 
$place = check_input($_POST[&#39;place&#39;]); 
$work1 = check_input($_POST[&#39;work1&#39;]); 
date_default_timezone_set(&#39;PRC&#39;); 
$date = date("Y-m-d H:i:s"); 
$quality = 100; 
$quality2 = 70; 
$quality_png = 9; 
$quality2_png = 7; 
if(isset($_FILES[&#39;work1&#39;]) && $_FILES[&#39;work1&#39;][&#39;error&#39;]==0) 
{ 
$size = getimagesize($_FILES[&#39;work1&#39;][&#39;tmp_name&#39;]); 
$original = $_FILES[&#39;work1&#39;][&#39;tmp_name&#39;]; 
$type = $_FILES[&#39;work1&#39;][&#39;type&#39;]; 
//echo $type; 
$target_name = date(&#39;YmdHis&#39;).&#39;_&#39;.preg_replace(&#39;`[^a-z0-9-_.]`i&#39;,&#39;&#39;,$_FILES[&#39;work1&#39;][&#39;name&#39;]); 
$work1 = $target_name; 
$target = dirname(__FILE__).&#39;/uploads/&#39;.$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__).&#39;/uploads/small/&#39;.$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[&#39;work2&#39;]) && $_FILES[&#39;work2&#39;][&#39;error&#39;]==0) 
{ 
$size = getimagesize($_FILES[&#39;work2&#39;][&#39;tmp_name&#39;]); 
$original = $_FILES[&#39;work2&#39;][&#39;tmp_name&#39;]; 
$type = $_FILES[&#39;work2&#39;][&#39;type&#39;]; 
$target_name = date(&#39;YmdHis&#39;).&#39;_&#39;.preg_replace(&#39;`[^a-z0-9-_.]`i&#39;,&#39;&#39;,$_FILES[&#39;work2&#39;][&#39;name&#39;]); 
$work2 = $target_name; 
$target = dirname(__FILE__).&#39;/uploads/&#39;.$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__).&#39;/uploads/small/&#39;.$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(&#39;$work_group&#39;,&#39;$name&#39;,&#39;$tel&#39;,&#39;$id_card&#39;,&#39;$work_name&#39;,&#39;$place&#39;,&#39;$work1&#39;,&#39;$work1_small&#39;,&#39;$date&#39;)"; 
//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(&#39;$work_group&#39;,&#39;$name&#39;,&#39;$tel&#39;,&#39;$id_card&#39;,&#39;$work_name&#39;,&#39;$place&#39;,&#39;$work2&#39;,&#39;$work2_small&#39;,&#39;$date&#39;)"; 
$result2 = $connector -> query($sql2) or die(mysql_error()); 
} 
$connector -> close($connector); 
$page="../upload.php"; 
echo "<script>alert(&#39;上传成功!&#39;); window.location = \"".$page."\";</script>"; 
?>


有些问题需要说明下: 
JPEG图像生成的图像的质量的是一个范围从0(最低质量,最小的文件大小)到100(最高质量,最大文件大小)。而ImagePNG生成图像的质量范围从0到9的,传入的这个范围以外的参数则该函数不会工作。 
判断上传文件的类型,$type = $_FILES['work1']['type'];。 
创建各种格式的图片可以使用这些函数:imagecreatefromjpeg()、imagecreatefrompng()、imagecreatefromgif()。


以上就是PHP支持多种格式图片上传(支持jpg、png、gif)_php技巧的内容,更多相关内容请关注PHP中文网(www.php.cn)!


声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。