php 图片文件、二进制流、base64格式相互转化

1,图片文件转化成二进制流

  1.  
    $image = 'E:/www/logo.png'; //图片文件地址
  2.  
     
  3.  
    $type = getimagesize($image)['mime']; //获取图片类型
  4.  
    $imgData = file_get_contents($image); //获取图片二进制流
  5.  
     
  6.  
    //输出二进制图片
  7.  
    ob_clean(); //清除缓冲区,防止出现“图像因其本身有错无法显示'的问题
  8.  
    header("Content-Type:{$type}");
  9.  
    echo $imgData; //输出图片
  10.  
     
  11.  
    //或者把此文件地址作为img标签src地址输出
  12.  
    //<img src="imgdata.php">

2,二进制流转化为图片文件

  1.  
    $file = "E:/www/logo2.png";
  2.  
    file_put_contents( $file, $imgData);

3,二进制流转化为base64格式图片

  1.  
    $type = getimagesizefromstring($imageData)['mime']; //获取二进制流图片格式
  2.  
    $base64String = 'data:' . $type . ';base64,' . chunk_split(base64_encode($imageData));
  3.  
     
  4.  
    //格式如:
  5.  
    'data:image/png;base64,iVBORw0...此处省略...RZV0P=';
  6.  
     
  7.  
     
  8.  
    //输出图片
  9.  
    echo "<img src='{$base64String }'>";

4,base64格式图片转化为二进制流

  1.  
    //截取data:image/png;base64, 这个逗号后的字符
  2.  
    $array = explode(',', $base64String);
  3.  
     
  4.  
    //对截取后的字符使用base64_decode进行解码,此为二进制流图片
  5.  
    $imgData = base64_decode(end($array));
posted @ 2020-07-31 14:47  也许明天  阅读(433)  评论(0)    收藏  举报