php圖片的二進位轉換實現方法,
本文執行個體講述了php圖片的二進位轉換實現方法。分享給大家供大家參考。具體實現方法如下:
這裡我們是在上傳檔案時把上傳的檔案轉換成二進位然後儲存到資料的欄位中去,下次讀讀出我們也用同樣的方法顯示即可.
html代碼如下:
複製代碼 代碼如下:
將圖片儲存到資料庫,代碼如下:
複製代碼 代碼如下:<?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;
?>
或者,代碼如下:複製代碼 代碼如下:
補充:
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 字元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程式設計有所協助。
http://www.bkjia.com/PHPjc/928231.htmlwww.bkjia.comtruehttp://www.bkjia.com/PHPjc/928231.htmlTechArticlephp圖片的二進位轉換實現方法, 本文執行個體講述了php圖片的二進位轉換實現方法。分享給大家供大家參考。具體實現方法如下: 這裡我們是...