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

首頁(yè) > 編程 > PHP > 正文

php圖片的二進(jìn)制轉(zhuǎn)換實(shí)現(xiàn)方法

2020-03-22 19:34:56
字體:
來(lái)源:轉(zhuǎn)載
供稿:網(wǎng)友
本文實(shí)例講述了php圖片的二進(jìn)制轉(zhuǎn)換實(shí)現(xiàn)方法。分享給大家供大家參考。具體實(shí)現(xiàn)方法如下:這里我們是在上傳文件時(shí)把上傳的文件轉(zhuǎn)換成二進(jìn)制然后保存到數(shù)據(jù)的字段中去,下次讀讀出我們也用同樣的方法顯示即可.html代碼如下:
復(fù)制代碼 代碼如下: 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
將圖片保存到數(shù)據(jù)庫(kù),代碼如下:
復(fù)制代碼 代碼如下: php
//由于上傳過(guò)來(lái)的圖片被保存在一個(gè)臨時(shí)文件中,所以
//我們僅需要讀取該文件就可以獲取傳過(guò)來(lái)的圖片
$fp = fopen($_FILES["myFile"]["tmp_name"],"rb");
$buf = addslashes(fread($fp,$_FILES["myFile"]["size"]));
//創(chuàng)建一個(gè)PDO對(duì)象
$dbh = new PDO("mysql:host=localhost;port=
3306;dbname=test", "root", "123456″);
//執(zhí)行插入操作并將結(jié)果保存在一個(gè)變量中
$result = $dbh- query("INSERT INTO img (images) VALUES (‘$buf')");
//獲取影響的行數(shù)
if ($result- rowCount() 0) {
echo("數(shù)據(jù)已插入。");
} else {
echo("不能執(zhí)行插入操作。");
}
//顯式的關(guān)閉PDO連接
$dbh = NULL;

顯示圖片show.php,代碼如下:
復(fù)制代碼 代碼如下: php
$conn=@mysql_connect("localhost","root","123456″) or die("服務(wù)器連接錯(cuò)誤!"); //鏈接數(shù)據(jù)庫(kù)
@mysql_select_db("test",$conn) or die("未發(fā)現(xiàn)數(shù)據(jù)庫(kù)!");
$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;

或者,代碼如下:復(fù)制代碼 代碼如下: img src="show.php id=5″ / 補(bǔ)充:1、fopen函數(shù).fopen()函數(shù)用于打開文件或者URL,語(yǔ)法如下:int fopen(string filename, string mode);字符串參數(shù)mode可以是下列的情形:"r"開文件方式為只讀,文件指針指到開始處."r+"開文件方式為可讀寫,文件指針指到開始處。"w"開文件方式為寫入,文件指針指到開始處,并將原文件的長(zhǎng)度設(shè)為0。若文件不存在,則建立新文件。"w+"開文件方式為可讀寫,文件指針指到開始處,并將原文件的長(zhǎng)度設(shè)為0。若文件不存在,則建立新文件。"a"開文件方式為寫入,文件指針指到文件最后。若文件不存在,則建立新文件。"a+"開文件方式為可讀寫,文件指針指到文件最后。若文件不存在,則建立新文件。"b"若操作系統(tǒng)的文字及二進(jìn)位文件不同,則可以用此參數(shù),UNIX系統(tǒng)不需要使用本參數(shù)。2、Addslashes函數(shù)Addslashes函數(shù)用于將字符串加入斜線,語(yǔ)法如下,注:我測(cè)試的時(shí)候是把這個(gè)函數(shù)去掉后成功了,道理你懂的,自己試下就明白了.string addslashes(string str);該函數(shù)使需要讓數(shù)據(jù)庫(kù)處理的字符串,引號(hào)的部份加上斜線,以供數(shù)據(jù)庫(kù)查詢(query)能順利運(yùn)作,這些會(huì)被改的字符包括單引號(hào)(')、雙引號(hào)(")、反斜線backslash()以及空字符NULL(the null byte).3、fread函數(shù)fread函數(shù)用于讀到指定長(zhǎng)度的位組或到文件尾EOF,語(yǔ)法如下:string fread(int fp, int length);可安全用于二進(jìn)制文件fread() 從文件指針 file 讀取最多 length 個(gè)字節(jié),該函數(shù)在讀取完最多 length 個(gè)字節(jié)數(shù),或到達(dá) EOF 的時(shí)候,或(對(duì)于網(wǎng)絡(luò)流)當(dāng)一個(gè)包可用時(shí),或(在打開用戶空間流之后)已讀取了 8192 個(gè)字節(jié)時(shí)就會(huì)停止讀取文件,視乎先碰到哪種情況.二進(jìn)制轉(zhuǎn)換成圖片注:$newFilePath 對(duì)生成的圖片名和路徑做處理,這里自己去實(shí)現(xiàn),代碼如下:
復(fù)制代碼 代碼如下:$newFilePath='1.jpg';
$data = $GLOBALS[HTTP_RAW_POST_DATA];//得到post過(guò)來(lái)的二進(jìn)制原始數(shù)據(jù)
if(emptyempty($data)){
$data=file_get_contents("php://input");
}
$newFile = fopen($newFilePath,"w");//打開文件準(zhǔn)備寫入
fwrite($newFile,$data);//寫入二進(jìn)制流到文件
fclose($newFile);//關(guān)閉文件
可以把讀取到的二進(jìn)制流存到數(shù)據(jù)庫(kù),也可以直接寫入成一個(gè)圖片,獲取二進(jìn)制頭文件,從而得知屬于什么類型文件,代碼如下:
復(fù)制代碼 代碼如下:$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';
}希望本文所述對(duì)大家的PHP程序設(shè)計(jì)有所幫助。PHP教程

鄭重聲明:本文版權(quán)歸原作者所有,轉(zhuǎn)載文章僅為傳播更多信息之目的,如作者信息標(biāo)記有誤,請(qǐng)第一時(shí)間聯(lián)系我們修改或刪除,多謝。

發(fā)表評(píng)論 共有條評(píng)論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 昌平区| 淮安市| 南投县| 蓝田县| 化隆| 石林| 凉山| 汾西县| 长子县| 清流县| 拜城县| 长乐市| 江安县| 秦皇岛市| 贡山| 庄河市| 陆川县| 英吉沙县| 潍坊市| 托克逊县| 平乡县| 新和县| 民乐县| 那曲县| 蒲江县| 沙洋县| 锡林郭勒盟| 上林县| 马龙县| 巴南区| 泽库县| 宁河县| 宁德市| 台东市| 雅安市| 桃源县| 江口县| 华蓥市| 宜君县| 祁门县| 宜兰县|