日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > php >内容正文

php

php二进制流转bmp图片,php图片的二进制转换实例

發布時間:2025/4/5 php 33 豆豆
生活随笔 收集整理的這篇文章主要介紹了 php二进制流转bmp图片,php图片的二进制转换实例 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

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

html,代碼如下:

將圖片保存到數據庫,代碼如下:

//由于上傳過來的圖片被保存在一個臨時文件中,所以

//我們僅需要讀取該文件就可以獲取傳過來的圖片

$fp=fopen($_FILES["myFile"]["tmp_name"],”rb”);

$buf=addslashes(fread($fp,$_FILES["myFile"]["size"]));

//創建一個PDO對象

$dbh=newPDO(“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,代碼如下:

$conn=@mysql_connect(“localhost”,”root”,”123456″)ordie(“服務器連接錯誤!”);//鏈接數據庫

@mysql_select_db(“test”,$conn)ordie(“未發現數據庫!”);

$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(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='';//開源代碼phpfensi.com

switch($typeCode)

{

case7790:

$fileType='exe';

break;

case7784:

$fileType='midi';

break;

case8297:

$fileType='rar';

break;

case255216:

$fileType='jpg';

break;

case7173:

$fileType='gif';

break;

case6677:

$fileType='bmp';

break;

case13780:

$fileType='png';

break;

default:

echo'unknown';

}

總結

以上是生活随笔為你收集整理的php二进制流转bmp图片,php图片的二进制转换实例的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。