国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 開發 > PHP > 正文

php圖片的二進制轉換實現方法

2024-05-04 23:28:55
字體:
來源:轉載
供稿:網友
這篇文章主要介紹了php圖片的二進制轉換實現方法,詳細介紹了圖片與二進制之間轉換的原理與實現技巧,非常具有實用價值,需要的朋友可以參考下
 
 

本文實例講述了php圖片的二進制轉換實現方法。分享給大家供大家參考。具體實現方法如下:

這里我們是在上傳文件時把上傳的文件轉換成二進制然后保存到數據的字段中去,下次讀讀出我們也用同樣的方法顯示即可.

html代碼如下:

復制代碼代碼如下:
<form action="insertPic.php" method="post" enctype="multipart/form-data" name="mainForm" id="mainForm"> 
<input type="file" name="myFile" /> 
<input type="submit" name="Submit" value="Submit"/> 
</form>

將圖片保存到數據庫,代碼如下:
復制代碼代碼如下:
<?php 
//由于上傳過來的圖片被保存在一個臨時文件中,所以 
//我們僅需要讀取該文件就可以獲取傳過來的圖片 
$fp = fopen($_FILES["myFile"]["tmp_name"],"rb"); 
$buf = addslashes(fread($fp,$_FILES["myFile"]["size"])); 
//創建一個PDO對象 
$dbh = new PDO("mysql:host=localhost;port= 
3306;dbname=test", "root", "123456″); 
//執行插入操作并將結果保存在一個變量中 
$result = $dbh->query("INSERT INTO img (images) VALUES (‘$buf')"); 
//獲取影響的行數 
if ($result->rowCount() >0) { 
echo("數據已插入。"); 
} else { 
echo("不能執行插入操作。"); 

//顯式的關閉PDO連接 
$dbh = NULL; 
?>

顯示圖片show.php,代碼如下:
復制代碼代碼如下:
<?php 
$conn=@mysql_connect("localhost","root","123456″) or die("服務器連接錯誤!"); //鏈接數據庫 
@mysql_select_db("test",$conn) or die("未發現數據庫!"); 
$query="select * from img where Id=".$_GET['id']; 
$result=mysql_query($query);
$num=mysql_num_rows($result); 
$data = mysql_result($result,0,"images"); 
header("Content-type: image/" . $num['imgType']); 
echo $data; 
?>

或者,代碼如下:
復制代碼代碼如下:
<img src="show.php?id=5″ />

 

補充:

1、fopen函數.

fopen()函數用于打開文件或者URL,語法如下:

int fopen(string filename, string mode);

字符串參數mode可以是下列的情形:

"r"開文件方式為只讀,文件指針指到開始處.

"r+"開文件方式為可讀寫,文件指針指到開始處。

"w"開文件方式為寫入,文件指針指到開始處,并將原文件的長度設為0。若文件不存在,則建立新文件。

"w+"開文件方式為可讀寫,文件指針指到開始處,并將原文件的長度設為0。若文件不存在,則建立新文件。

"a"開文件方式為寫入,文件指針指到文件最后。若文件不存在,則建立新文件。

"a+"開文件方式為可讀寫,文件指針指到文件最后。若文件不存在,則建立新文件。

"b"若操作系統的文字及二進位文件不同,則可以用此參數,UNIX系統不需要使用本參數。

2、Addslashes函數

Addslashes函數用于將字符串加入斜線,語法如下,注:我測試的時候是把這個函數去掉后成功了,道理你懂的,自己試下就明白了.

string addslashes(string str);

該函數使需要讓數據庫處理的字符串,引號的部份加上斜線,以供數據庫查詢(query)能順利運作,這些會被改的字符包括單引號(')、雙引號(")、反斜線backslash()以及空字符NULL(the null byte).

3、fread函數

fread函數用于讀到指定長度的位組或到文件尾EOF,語法如下:

string fread(int fp, int length);可安全用于二進制文件

fread() 從文件指針 file 讀取最多 length 個字節,該函數在讀取完最多 length 個字節數,或到達 EOF 的時候,或(對于網絡流)當一個包可用時,或(在打開用戶空間流之后)已讀取了 8192 個字節時就會停止讀取文件,視乎先碰到哪種情況.

二進制轉換成圖片

注:$newFilePath 對生成的圖片名和路徑做處理,這里自己去實現,代碼如下:

復制代碼代碼如下:
$newFilePath='1.jpg';
$data = $GLOBALS[HTTP_RAW_POST_DATA];//得到post過來的二進制原始數據
if(emptyempty($data)){
$data=file_get_contents("php://input");
}
$newFile = fopen($newFilePath,"w");//打開文件準備寫入
fwrite($newFile,$data);//寫入二進制流到文件
fclose($newFile);//關閉文件

可以把讀取到的二進制流存到數據庫,也可以直接寫入成一個圖片,獲取二進制頭文件,從而得知屬于什么類型文件,代碼如下:
復制代碼代碼如下:
$bin = substr($content,0,2);
$strInfo = @unpack("C2chars", $bin); 
$typeCode = intval($strInfo['chars1'].$strInfo['chars2']); 
$fileType = '';
switch ($typeCode) 

 case 7790: 
     $fileType = 'exe'; 
     break; 
 case 7784: 
     $fileType = 'midi'; 
     break; 
 case 8297: 
     $fileType = 'rar'; 
     break; 
 case 255216: 
     $fileType = 'jpg'; 
     break; 
 case 7173: 
     $fileType = 'gif'; 
     break; 
 case 6677: 
     $fileType = 'bmp'; 
     break; 
 case 13780: 
     $fileType = 'png'; 
     break; 
 default: 
     echo 'unknown'; 
}

 

希望本文所述對大家的PHP程序設計有所幫助。


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 渑池县| 肥乡县| 贡觉县| 台州市| 颍上县| 连州市| 景德镇市| 枞阳县| 玉山县| 蓬安县| 西乡县| 永济市| 应用必备| 包头市| 晋中市| 铜川市| 黄石市| 延庆县| 泰安市| 墨竹工卡县| 油尖旺区| 类乌齐县| 确山县| 屏东市| 泽州县| 仪征市| 沅江市| 正阳县| 满洲里市| 滦平县| 新竹县| 黎平县| 辉县市| 苏尼特右旗| 太仓市| 阆中市| 获嘉县| 灵璧县| 乳源| 张北县| 鸡泽县|