位置: IT常识 - 正文

图片格式转换(File、Blob、base64)(图片格式转换pdf)

编辑:rootadmin
图片格式转换(File、Blob、base64) 前言

推荐整理分享图片格式转换(File、Blob、base64)(图片格式转换pdf),希望有所帮助,仅作参考,欢迎阅读内容。

文章相关热门搜索词:图片格式转换jpeg,图片格式转换器免费版下载,图片格式转换pdf免费,图片格式转换器,图片格式转换器,图片格式转换免费软件,图片格式转换免费软件,图片格式转换器,内容如对您有帮助,希望把文章链接给更多的朋友!

记录一下比较常见的图片格式(File、Blob、base64)在不同的场景他们之间的相互转换的方法。

一、类型简介Blob

BLOB(binary large object): 二进制大对象,是一个可以存储二进制文件的容器。 在计算机中,BLOB常常是数据库中用来存储二进制文件的字段类型。

属性名称读/写描述size只读Blob 对象中所包含数据的大小(字节)。type只读一个字符串,表明该Blob对象所包含数据的MIME类型。如果类型未知,则该值为空字符串。例如 “image/png”图片格式转换(File、Blob、base64)(图片格式转换pdf)

我们在浏览器中输出的Blob对象:

File

File 对象通常是用户在网页中的一个 元素上传文件返回的 FileList 对象,或者是拖放操作返回的 DataTransfer 对象,也可以在浏览器中的控制台中自己创建。

属性名称读/写描述name只读返回文件的名称.由于安全原因,返回的值并不包含文件路径 。type只读返回 File 对象所表示文件的媒体类型(MIME)。例如 PNG 图像是 “image/png”.lastModified只读number, 返回所引用文件最后修改日期,自 1970年1月1日0:00 以来的毫秒数。lastModifiedDate只读Date, 返回当前文件的最后修改日期,如果无法获取到文件的最后修改日期,则使用当前日期来替代。size只读File 对象中所包含数据的大小(字节)webkitRelativePath只读返回 File 相关的 path 或 URL。

我们在浏览器中输出的File: 可以看到它的属性有和Blob一样的地方,只是在Blob的基础上做了扩展

base64

Base64是网络上最常见的用于传输8Bit字节码的编码方式之一,Base64就是一种基于64个可打印字符来表示二进制数据的方法。编码规则:把3个字节变成4个字节;每76个字符加一个换行符;最后的结束符也要处理。

看一个Base64格式的图片了解一下: 可以看到,Base64格式的图片以data开头,后面跟着图片类型和图片的基本数据

二、类型转换1、BLOB 与 FileFile 转 BLOB// 获取文件对象const _file = $("#file")[0].files[0];fileToBlob(){const type = file.type;const reader = new FileReader();reader.readAsDataURL(file)reader.onload = function(e) { const blob = new Blob([e.target.result], {type}); console.log("blob:", blob); const file = blobToFile(blob, 'fileName'); console.log('file', file);};}BLOB 转 FileblobToFile(blob, fileName){const file = new File([blob], fileName, {type: blob.type}); return file;}2、Blob 与 base64Blob转 base64blobToBase64(blob){const reader = new FileReader();reader.readAsDataURL(blob);reader.onload = (e) => { const base64 = e.target.result console.log("base64", base64);}}base64 转 Blobbase64ToBlob(base64) {// 分割base64let arr = base64.split(',');// 获取类型let mime = arr[0].match(/:(.*?);/)[1] || type;// 去掉url的头,并转化为bytelet bytes = window.atob(arr[1]);let n = new ArrayBuffer(bytes.length);let u8arr = new Uint8Array(n);while (n--) { u8arr[n] = bytes.charCodeAt(n);}return new Blob([u8arr], {type: mime});},3、File 与 base64File 与 base64// 获取文件对象const file = $("#file")[0].files[0];fileToBase64(file){const reader = new FileReader();reader.readAsDataURL(file);reader.onload = function (e) { // e.target.result 即为base64结果 console.log(e.target.result);};}base64 转 Filebase64ToFile(base64,filename) {// 分割base64let arr = base64.split(',');// 获取类型let mime = arr[0].match(/:(.*?);/)[1] || type;// 去掉url的头,并转化为bytelet bytes = window.atob(arr[1]);let n = new ArrayBuffer(bytes.length);let u8arr = new Uint8Array(n);while (n--) { u8arr[n] = bytes.charCodeAt(n);}return new File([u8arr],filename,{ type: mime });},4、arrayBuffer 与 base64base64转arrayBufferbase64ToUint8Array(base64String) {const padding = '='.repeat((4 - base64String.length % 4) % 4);const base64 = (base64String + padding) .replace(/\-/g, '+') .replace(/_/g, '/');const rawData = window.atob(base64);const outputArray = new Uint8Array(rawData.length);for (let i = 0; i < rawData.length; ++i) { outputArray[i] = rawData.charCodeAt(i);}return outputArray;}arrayBuffer转base64arrayBufferToBase64( buffer ) {var binary= '';var bytes = new Uint8Array( buffer );var len = bytes.byteLength;for (var i = 0; i < len; i++) { binary += String.fromCharCode( bytes[ i ] );}return window.btoa( binary );// 简写(一行代码)return window.btoa(String.fromCharCode(...new Uint8Array(buffer)))}三、扩展file转bufferconst buffer = fileReader.readAsArrayBuffer(file)file转binary(二进制格式)const buffer = fileReader.readAsBinaryString(file)file转file(用于修改file的只读属性name、type、lastModified)const newFile = new File([file], 'newName.wav', {type: 'audio/wav', lastModified: Date.now()})blob转blobUrlconst blob = '.....'window.URL = window.URL || window.webkitURL;const blobURL = window.URL.createObjectURL(blob);base64操作const arr = base64.split(',')const type = arr[0].match(/:(.*?);/)[1] // image/jpegconst size = window.atob(arr[1]).lengthbase加解密 -- 不支持中文场景:由于一些网络通讯协议的限制,必须对原数据进行编码后才可发送,后端得到后再解码得到原数据,例如,发送某些含有 ASCII 码表中 0 到 31 之间的控制字符的数据。base转码const base64 = window.btoa('a')base解码const string = window.atob(base64)

参考链接: ArrayBuffer转base64详解:https://juejin.cn/post/6844904088811880455 JavaScript(ES6) - ArrayBuffer: https://www.jianshu.com/p/5a841d6d7cc3

本文链接地址:https://www.jiuchutong.com/zhishi/298323.html 转载请保留说明!

上一篇:浅谈 JSON 对象和 FormData 相互转换,打通前端与后端的通信血脉(json与对象的区别)

下一篇:使用 JavaScript 创建一个兔年春节倒数计时器(javascript创建对象及应用)

  • 小米手环6怎么微信支付(小米手环6怎么连接手机蓝牙)

    小米手环6怎么微信支付(小米手环6怎么连接手机蓝牙)

  • 作业帮怎么取消自动续费(作业帮怎么取消自动续费微信)

    作业帮怎么取消自动续费(作业帮怎么取消自动续费微信)

  • vivox70pro+怎么设置双击亮屏(vivox70pro+怎么设置门禁卡)

    vivox70pro+怎么设置双击亮屏(vivox70pro+怎么设置门禁卡)

  • apple pencil一代怎么查看电量(Apple pencil一代怎么连接ipad pro)

    apple pencil一代怎么查看电量(Apple pencil一代怎么连接ipad pro)

  • iphone12怎么关机(iPhone12怎么关机重启)

    iphone12怎么关机(iPhone12怎么关机重启)

  • 打印机有哪些种类(打印机有哪些种类?各有什么特点?)

    打印机有哪些种类(打印机有哪些种类?各有什么特点?)

  • oppo手机微信视频电话用不了了怎么办(oppo手机微信视频来电没有声音怎么回事)

    oppo手机微信视频电话用不了了怎么办(oppo手机微信视频来电没有声音怎么回事)

  • 电笔显示123655什么意思(电笔显示1236什么意思)

    电笔显示123655什么意思(电笔显示1236什么意思)

  • 淘宝物流为啥没地图了(淘宝看不见物流)

    淘宝物流为啥没地图了(淘宝看不见物流)

  • k20pro尊享版是ufs3.0吗(k20pro 尊享版)

    k20pro尊享版是ufs3.0吗(k20pro 尊享版)

  • 微信小账本怎么注销(微信小账本怎么打开)

    微信小账本怎么注销(微信小账本怎么打开)

  • 电话号码被别人举报停机怎么处理(电话号码被别人注册微信了怎么办)

    电话号码被别人举报停机怎么处理(电话号码被别人注册微信了怎么办)

  • 微信绑定了别人的手机号怎么解冻(微信绑定了别人的银行卡怎么办)

    微信绑定了别人的手机号怎么解冻(微信绑定了别人的银行卡怎么办)

  • 华为手机咋看电池寿命(华为手机咋看电池好不好了)

    华为手机咋看电池寿命(华为手机咋看电池好不好了)

  • chislim是什么品牌(chillsince是什么品牌)

    chislim是什么品牌(chillsince是什么品牌)

  • 交易猫发货要多久(交易猫发货多久可以退款)

    交易猫发货要多久(交易猫发货多久可以退款)

  • 微信测试版是怎么回事(微信测试版怎么弄)

    微信测试版是怎么回事(微信测试版怎么弄)

  • 小红书可以个人开店吗(小红书可以个人卖货嘛)

    小红书可以个人开店吗(小红书可以个人卖货嘛)

  • 借条的复印件可以作为法律证据吗?(借条复印件可以起诉吗还有转账记录)

    借条的复印件可以作为法律证据吗?(借条复印件可以起诉吗还有转账记录)

  • 基于yoloV7-pose添加任意关键点 + 多类别分类网络修改(yolov3实现)

    基于yoloV7-pose添加任意关键点 + 多类别分类网络修改(yolov3实现)

  • TypeScript详解十六:类型声明(declare)(typescriptlang)

    TypeScript详解十六:类型声明(declare)(typescriptlang)

  • ecms怎么通过执行sql获取需要的记录(ecs怎么用)

    ecms怎么通过执行sql获取需要的记录(ecs怎么用)

  • 个税汇算清缴系统找不到扣缴义务人
  • 自查补缴增值税的会计处理
  • 总公司和子公司可以有业务往来吗
  • 分公司承担总公司差旅
  • 报销销售部门差旅费
  • 小规模残保金优惠政策2019
  • 新企业第一次报所得税
  • 零息债券支付利息吗
  • 混搭销售的企业有哪些
  • 设备安装行业前景
  • 待抵扣进项税额冲回
  • 企业成立股东没有实际出资分录怎么写?
  • 固定资产作为实收资本报废怎么处理
  • 残料的会计分录
  • 个税申报没交会收滞纳金吗
  • 新注册成立的公司可以往前补交社保吗
  • 一般纳税人销售自己使用过的物品
  • 企业增值税不可以跨月交吗
  • 企业为员工缴付养老保险
  • 房屋修缮发票能补开吗
  • 借钱注册公司会计分录
  • 会计速动比率计算公式
  • 代扣代征税款有哪些
  • 房产公司增值税怎么交
  • 增值税步骤
  • 为什么win7系统添加语言包
  • 生产性生物资产包括哪些
  • 报销伙食费的会计分录
  • mac系统10.10
  • 苹果客服人工24小时
  • win11发布时间正式确定
  • 一般纳税人转让不动产预缴
  • 租车接送员工上班怎么样
  • 武侯祠红墙在哪个门
  • php判断密码长度
  • php db2
  • 民营企业的工业项目建设-经营-转让是什么模式
  • add files to archive
  • 微信小程序获取手机号失败
  • win11安卓子系统教程
  • php实现有序数组的数据
  • php和python结合
  • didstata命令
  • 汇总纳税企业所得税征收管理办法
  • 税控系统维护费普通发票可以全额抵扣吗
  • 简易计税是否可以享受即征即退
  • python中字符串与数字相乘的结果
  • 租赁公司成本如何计算
  • 代收往来款的会计分录
  • 预缴增值税款怎么入账
  • 公章损坏如何更换
  • 全年一次性奖金并入或单独哪个好
  • 固定制造费用需要逐项进行预计通常与本期产量无关
  • 土地增值税预缴计算方法70号公告
  • 企业所得税费用标准
  • 风险纳税人去税务局去报税可以吗
  • 现金日记账怎么记账
  • 年报从业人数和什么有关
  • 合同履约成本的会计分录
  • mysql安装配置教程5.7.26
  • mysql查询慢sql命令
  • u盘装机大师手机下载电脑版
  • Mac如何使用clash上外网
  • linux文件详解
  • 更新版本
  • 笔记本用linux系统
  • linux安装有几种方法
  • 如何打开mac系统终端
  • window10如何解除密码
  • 透视投影的作用
  • opengl 绘制
  • cocos-2dx
  • 关于Colloder事件
  • js中bom是什么意思
  • javascript获取复选框的值
  • 福建税务总局电话
  • 养鱼业免增值税吗
  • 安置房公摊面积多少属于正常范围
  • 医务人员抗疫补助发放标准最新
  • 微信如何查询个人名下所有银行卡
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

    网站地图: 企业信息 工商信息 财税知识 网络常识 编程技术

    友情链接: 武汉网站建设