PHP保存Base64图片base64_decode的问题整理


Posted in PHP onNovember 04, 2019

PHP对Base64的支持非常好,有内置的base64_encode与base64_decode负责图片的Base64编码与解码。

编码上,只要将图片流读取到,而后使用base64_encode进行进行编码即可得到。

/**
 * 获取图片的Base64编码(不支持url) *
 * @param $img_file 传入本地图片地址 *
 * @return string
 */
function imgToBase64($img_file) {
  $img_base64 = '';
  if (file_exists($img_file)) {
    $app_img_file = $img_file; // 图片路径
    $img_info = getimagesize($app_img_file); // 取得图片的大小,类型等
    $fp = fopen($app_img_file, "r"); // 图片是否可读权限
    if ($fp) {
      $filesize = filesize($app_img_file);
      $content = fread($fp, $filesize);
      $file_content = chunk_split(base64_encode($content)); // base64编码
      switch ($img_info[2]) {      //判读图片类型
        case 1: $img_type = "gif";
          break;
        case 2: $img_type = "jpg";
          break;
        case 3: $img_type = "png";
          break;
      }
      $img_base64 = 'data:image/' . $img_type . ';base64,' . $file_content;//合成图片的base64编码
    }
    fclose($fp);
  }
  return $img_base64; //返回图片的base64
}

//调用使用的方法

$img_dir = dirname(__FILE__) . '/uploads/img/wwllwedd.jpg';
$img_base64 = imgToBase64($img_dir);
echo '<img src="' . $img_base64 . '">'; //图片形式展示
echo '<hr>';
echo $img_base64; //输出Base64编码

而解码就略微麻烦一点,究其原因在于把图片编码成base64字符串后,编码内会加入这些字符 data:image/png;base64,本来是用于base64进行识别的。但是如果直接放到php里用base64_decode函数解码会导致最终保存的图片文件格式损坏,而解决方法就是先去掉这一串字符

//方法一
preg_match('/^(data:\s*image\/(\w+);base64,)/', $base_info, $result) // 可以判断是否是 base64的图片
$type = $result[2];
$extensions = strtolower($type);
if (!in_array($extensions, array('gif', 'jpg', 'png', 'jpeg','bmp'))) {
  json_rtn(0, '上传的图片不在允许内');
}
$data= base64_decode(str_replace($result[1], '', $base_info));//对截取后的字符使用base64_decode进行解码
file_put_contents($pic_path,$data) //写入文件并保存
 
//方法二
$base64_string= explode(',', $base64_string); //截取data:image/png;base64, 这个逗号后的字符
$data= base64_decode($base64_string[1]);//对截取后的字符使用base64_decode进行解码
file_put_contents($url, $data); //写入文件并保存

以上就是本次介绍的关于PHP保存Base64图片base64_decode的问题内容,感谢大家的学习和对三水点靠木的支持。

PHP 相关文章推荐
聊天室php&amp;mysql(六)
Oct 09 PHP
PHP 获取客户端真实IP地址多种方法小结
May 15 PHP
使用JSON实现数据的跨域传输的php代码
Dec 20 PHP
基于python发送邮件的乱码问题的解决办法
Apr 25 PHP
利用PHP实现图片等比例放大和缩小的方法详解
Jun 06 PHP
php使用session二维数组实例
Nov 06 PHP
yii2 页面底部加载css和js的技巧
Apr 21 PHP
PHP中如何判断exec函数执行成功?
Aug 04 PHP
PHP面向对象继承用法详解(优化与减少代码重复)
Dec 02 PHP
Yii2 如何在modules中添加验证码的方法
Jun 19 PHP
PHP封装的分页类与简单用法示例
Feb 25 PHP
PHP读取XML文件的方法实例总结【DOMDocument及simplexml方法】
Sep 10 PHP
详解laravel passport OAuth2.0的4种模式
Nov 04 #PHP
laravel返回统一格式错误码问题
Nov 04 #PHP
php 中self,this的区别和操作方法实例分析
Nov 04 #PHP
PHP 文件写入和读取操作实例详解【必看篇】
Nov 04 #PHP
PHP连接MySQL数据库的三种方式实例分析【mysql、mysqli、pdo】
Nov 04 #PHP
php ZipArchive实现多文件打包下载实例
Oct 31 #PHP
Laravel框架实现抢红包功能示例
Oct 31 #PHP
You might like
用PHP与XML联手进行网站编程代码实例
2008/07/10 PHP
RR vs IO BO3 第二场2.13
2021/03/10 DOTA
iframe的onreadystatechange事件在firefox下的使用
2014/04/16 Javascript
JS获取Table中td值的方法
2015/03/19 Javascript
JS获取时间的相关函数及时间戳与时间日期之间的转换
2016/02/04 Javascript
用headjs来管理和加载js 提高网站加载速度
2016/11/29 Javascript
bootstrap vue.js实现tab效果
2017/02/07 Javascript
多个上传文件用js验证文件的格式和大小的方法(推荐)
2017/03/09 Javascript
详解nodejs微信公众号开发——5.素材管理接口
2017/04/11 NodeJs
node文件上传功能简易实现代码
2017/06/16 Javascript
VUE实现一个分页组件的示例
2017/09/13 Javascript
React Native 图片查看组件的方法
2018/03/01 Javascript
ES6 中可以提升幸福度的小功能
2018/08/06 Javascript
layui使用数据表格实现购物车功能
2019/07/26 Javascript
微信小程序列表时间戳转换实现过程解析
2019/10/12 Javascript
微信小程序实现多图上传
2020/06/19 Javascript
javascript实现支付宝滑块验证码效果
2020/07/24 Javascript
Python selenium 三种等待方式解读
2016/09/15 Python
python 接口测试response返回数据对比的方法
2018/02/11 Python
python如何读写csv数据
2018/03/21 Python
Django之Mode的外键自关联和引用未定义的Model方法
2018/12/15 Python
Python3最长回文子串算法示例
2019/03/04 Python
关于Python 解决Python3.9 pandas.read_excel(‘xxx.xlsx‘)报错的问题
2020/11/28 Python
Django集成MongoDB实现过程解析
2020/12/01 Python
阿迪达斯墨西哥官方网站:adidas墨西哥
2017/11/03 全球购物
英国女性时尚精品店:THE DRESSING ROOM
2018/05/23 全球购物
大学生求职信范文应怎么写
2014/01/01 职场文书
高一生物教学反思
2014/01/17 职场文书
会展策划与管理专业求职信
2014/06/09 职场文书
计算机软件专业求职信
2014/06/10 职场文书
缓刑人员思想汇报500字
2014/09/12 职场文书
大学生违纪检讨书300字
2014/10/25 职场文书
2015婚礼主持词开场白
2015/05/28 职场文书
英文投诉信格式
2015/07/03 职场文书
导游词之麻姑仙境
2019/11/18 职场文书
vue判断按钮是否可以点击
2022/04/09 Vue.js