位置: 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创建对象及应用)

  • 腾讯会议怎么举手功能(腾讯会议怎么举手回答问题)

    腾讯会议怎么举手功能(腾讯会议怎么举手回答问题)

  • 华为荣耀10是多大的屏幕(华为荣耀10是多大的手机屏幕)

    华为荣耀10是多大的屏幕(华为荣耀10是多大的手机屏幕)

  • edlal10是什么手机型号(edl-al10是什么型号)

    edlal10是什么手机型号(edl-al10是什么型号)

  • 小度1c二维码怎么找(小度的二维码怎么走)

    小度1c二维码怎么找(小度的二维码怎么走)

  • 店铺浏览量是什么意思(店铺浏览量和商品浏览量的区别)

    店铺浏览量是什么意思(店铺浏览量和商品浏览量的区别)

  • 抖音怎么找到抖音草稿箱的视频(抖音怎么找到抖音商城)

    抖音怎么找到抖音草稿箱的视频(抖音怎么找到抖音商城)

  • 快手没交保证金能上传商品吗(快手没交保证金的店铺能不能出售商品)

    快手没交保证金能上传商品吗(快手没交保证金的店铺能不能出售商品)

  • 手机屏幕干燥划不动怎么办(手机屏幕划起来干涩)

    手机屏幕干燥划不动怎么办(手机屏幕划起来干涩)

  • 打印pdf打印机没反应(pdf打印机打印完没有文件)

    打印pdf打印机没反应(pdf打印机打印完没有文件)

  • 按照电子元件划分计算机经历了几代(电子元件bz)

    按照电子元件划分计算机经历了几代(电子元件bz)

  • 苹果7要不要升级13.5

    苹果7要不要升级13.5

  • 屏幕裂了可以贴膜吗(屏幕裂了可以贴光固膜吗)

    屏幕裂了可以贴膜吗(屏幕裂了可以贴光固膜吗)

  • 荣耀v10充电器是多少w(荣耀v10充电器是多少瓦)

    荣耀v10充电器是多少w(荣耀v10充电器是多少瓦)

  • 小米夜灯怎么用(小米夜灯怎么用手机控制)

    小米夜灯怎么用(小米夜灯怎么用手机控制)

  • 手机换tp是什么意思(手机换TP是什么意思)

    手机换tp是什么意思(手机换TP是什么意思)

  • a1474是air1还是2(a1474是ipadair几)

    a1474是air1还是2(a1474是ipadair几)

  • 微信账号注销后朋友能看见么(微信账号注销后对方还有聊天记录吗)

    微信账号注销后朋友能看见么(微信账号注销后对方还有聊天记录吗)

  • 手机一键还原什么意思(手机一键还原对手机有什么影响)

    手机一键还原什么意思(手机一键还原对手机有什么影响)

  • 抖音视频怎么重新编辑(抖音视频怎么重复播放)

    抖音视频怎么重新编辑(抖音视频怎么重复播放)

  • 苹果x是单卡还是双卡(苹果x是单卡单待吗)

    苹果x是单卡还是双卡(苹果x是单卡单待吗)

  • word怎么做长下划线(word长长的下划线怎么打)

    word怎么做长下划线(word长长的下划线怎么打)

  • 步步高家教机h9恢复出厂设置(步步高家教机h9破解成平板)

    步步高家教机h9恢复出厂设置(步步高家教机h9破解成平板)

  • qq号手机号码换了上不去了怎么办(qq号手机号码换了怎么改)

    qq号手机号码换了上不去了怎么办(qq号手机号码换了怎么改)

  • oppor9s电池容量(oppor9s电池大小)

    oppor9s电池容量(oppor9s电池大小)

  • 2345浏览器如何添加兼容性站点(2345浏览器如何升级)

    2345浏览器如何添加兼容性站点(2345浏览器如何升级)

  • 花呗怎么付款给别人(花呗怎么付款给商家怎么付不了)

    花呗怎么付款给别人(花呗怎么付款给商家怎么付不了)

  • 苹果隔空播放设置方法(iphone 的隔空播放)

    苹果隔空播放设置方法(iphone 的隔空播放)

  • 小v怎么打开(小v怎么打开视频)

    小v怎么打开(小v怎么打开视频)

  • 税务局代开发票还要纳税吗
  • 一般纳税人收到专票怎么认证
  • 讲课费怎么代扣代缴个人所得税
  • 个人所得税包括绩效工资吗
  • 预缴税款是什么科目
  • 契税完税凭证是不是契税发票
  • 代理税务有哪些机构
  • 办理税务登记需要法人身份证原件吗
  • 为职工垫付的水电费应计入
  • 中山哪家企业招聘残疾人
  • 开普票的销项税额
  • 开了农民工资金专户必须使用吗
  • 个税代扣代缴返还手续费如何入账
  • 报税软件费用可以退吗
  • 行政处罚属于什么费用
  • 政府机关车辆拍卖
  • 销售过程中客户买的是什么
  • 销售自己使用过的物品
  • 固定资产按月折旧了,还能一次折旧么
  • 私车公用产生的过路费怎么开发票
  • 应收账款多几分钱怎么处理
  • 向其他单位无偿提供服务的不需缴纳增值税
  • 企业利用个体户走账
  • 合伙企业需要交企业所得税吗?
  • 对子公司进行增资
  • 房地产开发企业取得的土地使用权用于建造
  • 按简易办法征收增值税
  • 租房税收缴款书在哪里打印
  • 什么叫做区分
  • 预缴增值税附加税款怎么填写申报表
  • 单位给个人报销计入什么科目
  • win7网络连接在哪里打开
  • vue3中使用require
  • php中construct
  • php proto
  • 比斯蒂荒野上的“外星孵化场”,新墨西哥州 (© Ian Shive/Tandem Stills + Motion)
  • php 命名空间
  • php封装app打包
  • 成本票和费用票一样吗
  • 物流公司的会计好干吗
  • 建筑业营改增前后区别
  • 增值税普票如何开具红字发票
  • 企业变更法人的原因怎么写
  • 材料成本差异的超支与节约
  • 个人股东和法人股东分红纳税
  • 增资扩股和股权转让一样吗
  • 合并成本和初始的区别
  • 合并资产负债表与母公司资产负债表要看那一个好
  • 计提企业所得税的会计科目
  • 退休返聘人员工伤怎么赔偿
  • 注册资本认缴与实缴有什么区别
  • 凭证必须用凭证盒
  • 自来水公司代收污水处理费
  • 基金申购费的会计分录
  • 硕士研究生个税专项扣除
  • 有限公司结业清算
  • 国家也通过国有企业利用自己的财政资金
  • 手工现金日记账范本
  • 加油站如何开票
  • sql查询生成器
  • mysql数据库定时备份脚本
  • 数据转换常见策略
  • MySQL利用视图查询员工进货数量要求输出姓名进货数量
  • apache not found
  • ubuntu21.04中文
  • linux校验文件
  • win10系统如何禁用触摸板
  • vi编辑器是干什么的
  • Linux中cp和scp命令的使用方法
  • win7系统连接蓝牙音箱
  • win8.1技巧
  • ie11打不开闪退解决办法win 7
  • linux的安装教程
  • cocos2dx环境搭建
  • 怎么用html做一个留言板
  • vue2.0与bootstrap3实现列表分页效果
  • jquery创建表格
  • python代码规范化
  • 青春逐梦税务蓝
  • 个人所得税申报怎么申报
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设