• 技术文章 >php教程 >php手册

    php图片的二进制转换实现方法

    2016-06-06 20:15:56原创437

    这篇文章主要介绍了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 whereimages");
    header("Content-type: image/" . $num['imgType']);
    echo $data;
    ?>


    或者,代码如下:

    复制代码 代码如下:

    "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 = '';
    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程序设计有所帮助。

    声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn核实处理。
    专题推荐:php 图片 二进制 转换
    上一篇:PHP中if和or运行效率对比 下一篇:php针对cookie操作的队列操作类实例
    千万级数据并发解决方案

    相关文章推荐

    • 第一节--面向对象编程--ClassesandObjectsinPHP51• ZendOptimizer配置指南• BluePage通用分页类助开发者提高开发效率• 基于DB2及PHP的应用系统跨平台迁移详细步骤(二)• 在PHP中利用XML技术构造远程服务(1)
    1/1

    PHP中文网