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 相关文章推荐
为查询结果建立向后/向前按钮
Oct 09 PHP
PHP模块 Memcached功能多于Memcache
Jun 14 PHP
php各种编码集详解和以及在什么情况下进行使用
Sep 11 PHP
PHP mb_convert_encoding文字编码的转换函数介绍
Nov 10 PHP
php截取后台登陆密码的代码
May 05 PHP
记录mysql性能查询过程的使用方法
May 02 PHP
深入HTTP响应状态码速查表的详解
Jun 07 PHP
php防止sql注入简单分析
Mar 18 PHP
Yii2中SqlDataProvider用法示例
Sep 22 PHP
PHP判断一个数组是另一个数组子集的方法详解
Jul 31 PHP
php读取本地json文件的实例
Mar 07 PHP
Thinkphp 框架基础之入口文件功能、定义与用法分析
Apr 27 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
如何用phpmyadmin设置mysql数据库用户的权限
2012/01/09 PHP
定义php常量的详解
2013/06/09 PHP
简单的php缓存类分享     php缓存机制
2014/01/22 PHP
PHP中使用memcache存储session的三种配置方法
2014/04/05 PHP
Yii2框架redis基本应用示例
2018/07/13 PHP
PHP开发api接口安全验证操作实例详解
2020/03/26 PHP
JavaScript 对Cookie 操作的封装小结
2009/12/31 Javascript
Jquery 例外被抛出且未被接住原因介绍
2013/09/04 Javascript
javascript获取浏览器类型和版本的方法(js获取浏览器版本)
2014/03/13 Javascript
利用jquery动画特效和css打造的侧边弹出垂直导航
2014/04/04 Javascript
JavaScript中的单引号和双引号报错的解决方法
2014/09/01 Javascript
js调试工具Console命令详解
2014/10/21 Javascript
jQuery在页面加载时动态修改图片尺寸的方法
2015/03/20 Javascript
使用smartupload组件实现jsp+jdbc上传下载文件实例解析
2017/01/05 Javascript
js实现网页的两个input标签内的数值加减(示例代码)
2017/08/15 Javascript
详解在HTTPS 项目中使用百度地图 API
2019/04/26 Javascript
浅谈Node 异步IO和事件循环
2019/05/05 Javascript
JS原型对象操作实例分析
2020/06/06 Javascript
解决vue使用vant下拉框van-dropdown-item 绑定title值不变问题
2020/08/05 Javascript
关于javascript中的promise的用法和注意事项(推荐)
2021/01/15 Javascript
python采集博客中上传的QQ截图文件
2014/07/18 Python
一波神奇的Python语句、函数与方法的使用技巧总结
2015/12/08 Python
Python分治法定义与应用实例详解
2017/07/28 Python
如何基于windows实现python定时爬虫
2020/05/01 Python
Python之京东商品秒杀的实现示例
2021/01/06 Python
HTML5页面直接调用百度地图API获取当前位置直接导航目的地的实现代码
2018/03/02 HTML / CSS
我们是伦敦女孩:WalG
2018/01/08 全球购物
Desigual英国官网:在线购买原创服装
2018/03/09 全球购物
美国体育用品在线:Modell’s Sporting Goods
2018/06/07 全球购物
自我鉴定范文
2013/11/10 职场文书
运动会加油稿20字
2014/11/15 职场文书
岳庙导游词
2015/02/04 职场文书
于丹论语心得观后感
2015/06/15 职场文书
2015年支教教师工作总结
2015/07/22 职场文书
劳动保障事务所个人工作总结
2015/08/12 职场文书
2016党员学习心得体会范文
2016/01/23 职场文书