PHP支持多種格式圖片上傳(支持jpg、png、gif)
更新時(shí)間:2011年11月03日 19:10:43 作者:
簡(jiǎn)單地寫(xiě)了一個(gè)PHP的圖片上傳,可以支持jpg、png、gif等格式的圖片,如果你想支持更多的格式,比如bmp,可以自己擴(kuò)充。不是面向?qū)ο蟮?,在這里簡(jiǎn)單記錄下,以便以后取用
此處一次支持上傳2個(gè)圖片,上傳后生成原圖和質(zhì)量較差的圖,原圖用于保存質(zhì)量高的圖片,質(zhì)量差的圖用于網(wǎng)頁(yè)顯示。
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("不支持此文件類(lèi)型");
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("不支持此文件類(lèi)型");
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("不支持此文件類(lèi)型");
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("不支持此文件類(lèi)型");
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>";
?>
有些問(wèn)題需要說(shuō)明下:
JPEG圖像生成的圖像的質(zhì)量的是一個(gè)范圍從0(最低質(zhì)量,最小的文件大小)到100(最高質(zhì)量,最大文件大?。?。而ImagePNG生成圖像的質(zhì)量范圍從0到9的,傳入的這個(gè)范圍以外的參數(shù)則該函數(shù)不會(huì)工作。
判斷上傳文件的類(lèi)型,$type = $_FILES['work1']['type'];。
創(chuàng)建各種格式的圖片可以使用這些函數(shù):imagecreatefromjpeg()、imagecreatefrompng()、imagecreatefromgif()。
PHP Code
復(fù)制代碼 代碼如下:
<?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("不支持此文件類(lèi)型");
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("不支持此文件類(lèi)型");
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("不支持此文件類(lèi)型");
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("不支持此文件類(lèi)型");
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>";
?>
有些問(wèn)題需要說(shuō)明下:
JPEG圖像生成的圖像的質(zhì)量的是一個(gè)范圍從0(最低質(zhì)量,最小的文件大小)到100(最高質(zhì)量,最大文件大?。?。而ImagePNG生成圖像的質(zhì)量范圍從0到9的,傳入的這個(gè)范圍以外的參數(shù)則該函數(shù)不會(huì)工作。
判斷上傳文件的類(lèi)型,$type = $_FILES['work1']['type'];。
創(chuàng)建各種格式的圖片可以使用這些函數(shù):imagecreatefromjpeg()、imagecreatefrompng()、imagecreatefromgif()。
您可能感興趣的文章:
- php多個(gè)文件及圖片上傳實(shí)例詳解
- PHP+jQuery+Ajax實(shí)現(xiàn)多圖片上傳效果
- jquery+php+ajax顯示上傳進(jìn)度的多圖片上傳并生成縮略圖代碼
- PHP實(shí)現(xiàn)多圖片上傳類(lèi)實(shí)例
- PHP仿微信多圖片預(yù)覽上傳實(shí)例代碼
- Android OkHttp 結(jié)合php 多圖片上傳實(shí)例
- php實(shí)現(xiàn)多張圖片上傳加水印技巧
- PHP結(jié)合jquery ajax實(shí)現(xiàn)上傳多張圖片,并限制圖片大小操作示例
- php+flash+jQuery多圖片上傳源碼分享
- PHP實(shí)現(xiàn)一個(gè)按鈕點(diǎn)擊上傳多個(gè)圖片操作示例
相關(guān)文章
PHP批量獲取網(wǎng)頁(yè)中所有固定種子鏈接的方法
這篇文章主要介紹了PHP批量獲取網(wǎng)頁(yè)中所有固定種子鏈接的方法,涉及php字符串與文件操作的相關(guān)技巧,需要的朋友可以參考下2016-11-11
PHP實(shí)現(xiàn)數(shù)字補(bǔ)零功能的2個(gè)函數(shù)介紹
這篇文章主要介紹了PHP實(shí)現(xiàn)數(shù)字補(bǔ)零功能的2個(gè)函數(shù)介紹,需要的朋友可以參考下2014-05-05
ThinkPHP6使用JWT+中間件實(shí)現(xiàn)Token驗(yàn)證實(shí)例詳解
這篇文章主要介紹了ThinkPHP6使用JWT+中間件實(shí)現(xiàn)Token驗(yàn)證的方法,結(jié)合實(shí)例形式詳細(xì)分析了JWT的功能、原理及token驗(yàn)證相關(guān)操作技巧,需要的朋友可以參考下2023-06-06
php+mysql查詢(xún)實(shí)現(xiàn)無(wú)限下級(jí)分類(lèi)樹(shù)輸出示例
這篇文章主要介紹了php+mysql查詢(xún)實(shí)現(xiàn)無(wú)限下級(jí)分類(lèi)樹(shù)輸出,結(jié)合實(shí)例形式分析了php+MySQL查詢(xún)實(shí)現(xiàn)的樹(shù)狀分類(lèi)輸出功能,涉及php數(shù)據(jù)庫(kù)查詢(xún)與數(shù)組遍歷等相關(guān)操作技巧,需要的朋友可以參考下2016-10-10
PHP實(shí)現(xiàn)PDF轉(zhuǎn)圖片的方法詳解
這篇文章主要給大家介紹了關(guān)于PHP將PDF轉(zhuǎn)圖片的實(shí)現(xiàn)方法,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2022-12-12
數(shù)組與類(lèi)使用PHP的可變變量名需要的注意的問(wèn)題
本篇文章是對(duì)數(shù)組與類(lèi)使用PHP的可變變量名需要的注意的問(wèn)題進(jìn)行了詳細(xì)的分析介紹,需要的朋友參考下2013-06-06
php警告Creating default object from empty value 問(wèn)題的解決方法
PHP 提示 Creating default object from empty value 的問(wèn)題,一般是由于PHP版升級(jí)的原因,PHP 5.4 以上的版本一般會(huì)報(bào)這個(gè)錯(cuò)誤2014-04-04

