PHP图片的二进制转换为数据流

<?php
//echo fread(fopen($realfilename,'rb');这样输出一个图片 你看看是什么内容

//先将图片转换为字节流,然后再转回来输出
$filename = "abc.jpg";
$PSize = filesize($filename);
$picturedata = fread(fopen($filename,"r"),$PSize);
//header( "Content-type: image/jpeg");
echo $picturedata;
$newFilePath = "bb.jpg";
$newFile = fopen($newFilePath,"w");    //打开文件准备写入
$fs = fwrite($newFile,$picturedata);//写入二进制流到文件
fclose($newFile);                    //关闭文件
?>
<img src="bb.jpg" />

<?php
/* //由于上传过来的图片被保存在一个临时文件中,所以
//我们仅需要读取该文件就可以获取传过来的图片
$fp = fopen($_FILES["myFile"]["tmp_name"],”rb”);
$buf = addslashes(fread($fp,$_FILES["myFile"]["size"]));
$buf = fread($fp,$_FILES["myFile"]["size"]);

//二进制转换成图片
//注:$newFilePath 对生成的图片名和路径做处理,这里自己去实现。
$newFilePath='1.jpg';
$data = $GLOBALS[HTTP_RAW_POST_DATA];    //得到post过来的二进制原始数据
if(empty($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';
} 
*/

 

posted @ 2014-10-16 16:17  王永东gg  阅读(2709)  评论(0)    收藏  举报