php图片的二进制转换实现方法
《:php图片的二进制转换实现方法》要点: PHP实战本篇章节讲解php图片的二进制转换实现办法.分享给大家供大家参考.具体实现办法如下: 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","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,"images"); header("Content-type: image/" . $num['imgType']); echo $data; ?> 或者,代码如下:
代码如下:
<img src="show.php?id=5″ />
PHP实战补充: PHP实战1、fopen函数. PHP实战fopen()函数用于打开文件或者URL,语法如下: PHP实战int fopen(string filename,string mode); PHP实战字符串参数mode可以是下列的情形: PHP实战"r"开文件方式为只读,文件指针指到开始处. PHP实战"r+"开文件方式为可读写,文件指针指到开始处. PHP实战"w"开文件方式为写入,文件指针指到开始处,并将原文件的长度设为0.若文件不存在,则建立新文件. PHP实战"w+"开文件方式为可读写,则建立新文件. PHP实战"a"开文件方式为写入,文件指针指到文件最后.若文件不存在,则建立新文件. PHP实战"a+"开文件方式为可读写,则建立新文件. PHP实战"b"若操作系统的文字及二进位文件不同,则可以用此参数,UNIX系统不需要使用本参数. PHP实战2、Addslashes函数 PHP实战Addslashes函数用于将字符串加入斜线,语法如下,注:我测试的时候是把这个函数去掉后成功了,道理你懂的,自己试下就明白了. PHP实战string addslashes(string str); PHP实战该函数使需要让数据库处理的字符串,引号的部份加上斜线,以供数据库查询(query)能顺利运作,这些会被改的字符包括单引号(')、双引号(")、反斜线backslash()以及空字符NULL(the null byte). PHP实战3、fread函数 PHP实战fread函数用于读到指定长度的位组或到文件尾EOF,语法如下: PHP实战string fread(int fp,int length);可平安用于二进制文件 PHP实战fread() 从文件指针 file 读取最多 length 个字节,该函数在读取完最多 length 个字节数,或到达 EOF 的时候,或(对于网络流)当一个包可用时,或(在打开用户空间流之后)已读取了 8192 个字节时就会停止读取文件,视乎先碰到哪种情况. PHP实战二进制转换成图片 PHP实战注:$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,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实战希望本文所述对大家的PHP程序设计有所赞助. 《:php图片的二进制转换实现方法》是否对您有启发,欢迎查看更多与《:php图片的二进制转换实现方法》相关教程,学精学透。编程之家 52php.cn为您提供精彩教程。 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |