php图片的二进制转换实例
发布:smiling 来源: PHP粉丝网 添加日期:2014-09-22 10:54:28 浏览: 评论:0
这里我们是在上传文件时把上传的文件转换成二进制然后保存到数据的字段中去,下次读读出我们也用同样的方法显示即可.
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 = '';//开源代码phpfensi.com
- 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';
- }
Tags: php图片进制 php二进制转换
- 上一篇:PHP判断远程图片或文件或url是否存在
- 下一篇:php高效快速获取图片尺寸的方法
推荐文章
热门文章
最新评论文章
- 写给考虑创业的年轻程序员(10)
- PHP新手上路(一)(7)
- 惹恼程序员的十件事(5)
- PHP邮件发送例子,已测试成功(5)
- 致初学者:PHP比ASP优秀的七个理由(4)
- PHP会被淘汰吗?(4)
- PHP新手上路(四)(4)
- 如何去学习PHP?(2)
- 简单入门级php分页代码(2)
- php中邮箱email 电话等格式的验证(2)