在移动端上传图片的时候通常会将图片转换成base64格式的字符串提交,所以此时需要使用服务器端的程序进行转换成二进制的数据。如下PHP代码实现了图片文件和base64格式的图片字符串相互转换的方法,同时保证了图片字符串转图片文件时数据类型的问题,进行了简单的封装,使用时可根据实际情况进行修改。具体查看如下代码:

class Img
{
/**
@param $base64Str base64格式的图片字符串数据
@param $path 保存的文件路径和文件名(不用带扩展名 自动匹配)
*/
function base64ToImg($base64Str,$path){
$arr = explode(',',$base64Str);
$bin = base64_decode($arr[1]);
$ext = $this->getImgExt($bin);//获取真实扩展名
if($ext !== false){
file_put_contents($path . '.' . $ext,$bin);
}else{
exit('图片格式非法');
}
} /*
图片文件转base64格式的图片字符串
@param $img_file 图片路径和文件名
return 图片字符串
*/
function imgToBase64($img_file){ $img_info = getimagesize($img_file);
$img_src = "data:{$img_info['mime']};base64," . base64_encode(file_get_contents($img_file));
return $img_src;
}
/**
获取图片文件的扩展名 如果不是图片数据则返回false
@param $bin 二进制图片数据流
return 图片扩展名
*/
public function getImgExt($bin){ $bits = array(
'jpg' => "\xFF\xD8\xFF",
'gif' => "GIF",
'png' => "\x89\x50\x4e\x47\x0d\x0a\x1a\x0a",
'bmp' => 'BM',
); foreach ($bits as $type => $bit) {
if (substr($bin, 0, strlen($bit)) === $bit) {
return $type;
}
}
return false; } } $obj = new Img(); $str = '这里是base64格式的字符串'; $obj->base64ToImg($str,'路径/文件名');

php base64格式的图片字符串和图片文件相互转换的代码的更多相关文章

  1. Delphi 读取 c# webservice XML的base64编码图片字符串转化图片并显示

    Delphi 读取 c# webservice XML的base64编码图片字符串转化图片并显示 在 开发中遇到应用c#及asp.net的在的webservice 保存图片并以xml文件形式现实出来 ...

  2. 上传图片转为base64格式预览并压缩图片(不兼容IE9以下浏览器,兼容移动端ios,android)

    前些天公司要求在微信移动端做上传图片并预览的功能,要求能够调用摄像头拍照并立即预览. 在网上搜了一些方法,开始自己写了个简单的功能实现代码.结果发现移动端拍照出来的图片动不动就2M+,又因为要批量上传 ...

  3. 【Java】支付宝获取人脸采集认证的图片base64格式

    人脸识别结果查询接口zoloz.identification.user.web.query返回的imgStr图片字符串并不是标准的base64格式,解析不出图片. 由于标准的Base64并不适合直接放 ...

  4. 把vux中的@font-face为base64格式的字体信息解码成可用的字体文件

    在最近移动端项目中用到了vux,感觉用着还习惯,当把vux使用到PC端的时候出现了IE浏览器出现,这样的错误信息: CSS3114: @font-face 未能完成 OpenType 嵌入权限检查.权 ...

  5. EF+LINQ事物处理 C# 使用NLog记录日志入门操作 ASP.NET MVC多语言 仿微软网站效果(转) 详解C#特性和反射(一) c# API接受图片文件以Base64格式上传图片 .NET读取json数据并绑定到对象

    EF+LINQ事物处理   在使用EF的情况下,怎么进行事务的处理,来减少数据操作时的失误,比如重复插入数据等等这些问题,这都是经常会遇到的一些问题 但是如果是我有多个站点,然后存在同类型的角色去操作 ...

  6. html中canvas渲染图片,并转化成base64格式保存

    最近在做一个上传头像然后保存显示的功能,因为涉及到裁剪大小和尺寸比例,所以直接上传图片再展示的话,就会出现问题,所以就想用canvas来渲染裁剪后的图片,然后转化成base64格式的图片再存储,这样取 ...

  7. 图片base64格式转为file文件类型上传方法

    日常使用文件上传方式,都是通过input type='file'的文件选择框进行文件上传.但是会通过其他交互方式等到图片的base64格式进行上传.具体情况如下示意: 在项目开发中,需要进行照片采集, ...

  8. laravel 存储base64格式图片

    laravel 存储base64格式图片 一.总结 一句话总结: 用正则替换base64图片编码的编码头即可 存储图片的话,用laravel可以用Storage的put方法,原生php可以用file_ ...

  9. base64格式的图片上传阿里云

    base64格式的图片上传阿里云 上传图片的时候,除了普通的图片上传,还有一张图片信息是以base64格式发送到后台的. 后台接受base64格式的图片,上传至阿里云代码:(主要是将base64转化成 ...

随机推荐

  1. Java 内幕新闻第二期深度解读

    这是由 Java 官方发布,Oracle JDK 研发 Nipafx 制作的节目,包含 JDK 近期的研发进展和新特性展望和使用,这里加上个人译制的字幕搬运而来.我把 Nipafx 的扩展资料详细研读 ...

  2. CSS3 动画3D视角下 旋转圆环

    首先是  transform 属性: transform 属性向元素应用 2D 或 3D 转换.该属性允许我们对元素进行旋转.缩放.移动或倾斜. 加上对应属性则可得到3D透视效果下的形态 本次以圆形( ...

  3. 通俗易懂详解iptables

    防火墙相关概念 从逻辑上讲.防火墙可以大体分为主机防火墙和网络防火墙. 主机防火墙:针对于单个主机进行防护. 网络防火墙:往往处于网络入口或边缘,针对于网络入口进行防护,服务于防火墙背后的本地局域网. ...

  4. C++数据结构类型以及实现类

    1.array数组 #include<iostream> #include<array> using namespace std; int main() { array< ...

  5. Clang-Format 个人常用配置

    Clang-Format 个人常用配置 本文记录 Clang-Format 个人常用配置. 欲了解更多配置选项,可查阅 官方文档. BasedOnStyle: Google AccessModifie ...

  6. 社交网络分析的 R 基础:(三)向量、矩阵与列表

    在第二章介绍了 R 语言中的基本数据类型,本章会将其组装起来,构成特殊的数据结构,即向量.矩阵与列表.这些数据结构在社交网络分析中极其重要,本质上对图的分析,就是对邻接矩阵的分析,而矩阵又是由若干个向 ...

  7. 从我做起[AutoMapper实现模块化注册自定义扩展MapTo<>()].Net Core 之二

    AutoMapper实现模块化注册自定义扩展MapTo<>() 我们都知道AutoMapper是使用的最多的实体模型映射,如果没有AutoMapper做对象映射那么我们需要想一下是怎么写的 ...

  8. 2019年1月9日 ES6 学习心得

    ES6为我们创建对象提供了新的语法糖,这就是Class语法.如果你对ES5中面向对象的方式比较熟悉的话,Class掌握起来也是非常迅速的,因为除了写法的不同,它并不会增加新的难以理解的知识点.我们先利 ...

  9. 模仿UIApplication单例

    要求:程序一启动就创建创建对象.创建的对象只能通过share的⽅方式获取对象.不能够进行alloc 操作,当执⾏行alloc时, 程序发生崩溃 1.程序一启动的时候就创建对象.当类被加载到内存的时候就 ...

  10. drop、delete和truncate三者的区别

    相同点:1.truncate和不带where子句的delete.以及drop都会删除表内的数据.2.drop.truncate都是DDL语句(数据定义语言),执行后会自动提交.不同点:1. trunc ...