js数据流之间的转换blobfileDataURLcanvasArrayBuffer
将blob转成file
利用new File();function blobToFile(blob, filename, type) { return new File([blob], filename, { type }) } blobToFile("test info", "test", "text/plain" )
输出如下
更进一步了解可阅读MDN File - Web API 鎺ュ彛鍙傝€� | MDNMDN Web DocsMDN logoMozilla logo
Blob() - Web API 接口参考 | MDN讲解将file转换成DataURL
利用URL.createObjectURL()
let img = document.getElementById("img") let file = document.getElementById("file") file.onchange = function () { let imgFile = this.files[0] img.src = URL.createObjectURL(imgFile) img.onload = function () { URL.revokeObjectURL(this.src) } }
更进一步了解可阅读 MDN URL.createObjectURL() - Web API 鎺ュ彛鍙傝€� | MDNMDN Web DocsMDN logoMozilla logo 讲解利用FileReader.readAsDataURL()let img = document.getElementById("img") let file = document.getElementById("file") file.onchange = function (e) { let imgFile = this.files[0] let fileReader = new FileReader() fileReader.readAsDataURL(imgFile) fileReader.onload = function () { img.src = this.result } }
更进一步了解可阅读FileReader - Web API 鎺ュ彛鍙傝€� | MDNMDN Web DocsMDN logoMozilla logo简介将DataURL转成filefunction dataURLToFile (dataUrl, fileName) { const dataArr = dataUrl.split(",") const mime = dataArr[0].match(/:(.*);/)[1] const originStr = atob(dataArr[1]) return new File([originStr], fileName, { type: mime }) } dataURLToFile("data:text/plain;base64,YWFhYWFhYQ==", "测试文件") // File {name: "测试文件", lastModified: 1640784525620, lastModifiedDate: Wed Dec 29 2021 21:28:45 GMT+0800 (中国标准时间), webkitRelativePath: "", size: 7, …}
复杂处理方式如下function dataURLToFile (dataUrl, filename) { const dataArr = dataUrl.split(",") const mime = dataArr[0].match(/:(.*);/)[1] const originStr = atob(dataArr[1]) let n = originStr.length const u8Arr = new Uint8Array(n) while (n--) { u8Arr[n] = originStr.charCodeAt(n) } return new File([u8Arr], filename, { type: mime }) } dataURLToFile("data:text/plain;base64,YWFhYWFhYQ==", "测试文件") console.log(dataURLToFile("data:text/plain;base64,YWFhYWFhYQ==","测试文件")); // File {name: "测试文件", lastModified: 1640784866937, lastModifiedDate: Wed Dec 29 2021 21:34:26 GMT+0800 (中国标准时间), webkitRelativePath: "", size: 7, …}
将canvas转成DataURL
利用canvas.toDataURL()// html // js document.querySelector("#file").onchange = function () { canvasToDataURL(this.files[0]).then(res => console.log(res)) } function canvasToDataURL (file) { return new Promise(resolve => { const img = document.createElement("img") img.src = URL.createObjectURL(file) img.onload = function () { const canvas = document.createElement("canvas") canvas.width = img.width canvas.height = img.height const ctx = canvas.getContext("2d") ctx.drawImage(img, 0, 0) resolve(canvas.toDataURL("image/png", 1)) } }) }
将DataURL转成canvasfunction dataUrlToCanvas (dataUrl) { return new Promise(resolve => { const img = new Image() img.src = dataUrl img.onload = function () { const canvas = document.createElement("canvas") canvas.width = this.width canvas.height = this.height const ctx = canvas.getContext("2d") ctx.drawImage(this, 0, 0) resolve(canvas) } }) } const dataUrl = "data:image/png;base64,iVBORw0KGgoAAAANSUh..." dataUrlToCanvas(dataUrl) .then(res => document.body.appendChild(res))
将canvas转成blob
利用canvas.toBlob()
// html // js document.querySelector("#file").onchange = function () { canvasToDataURL(this.files[0]) .then(res => console.log(res)) } function canvasToDataURL (file) { return new Promise(resolve => { const img = document.createElement("img") img.src = URL.createObjectURL(file) img.onload = function () { const canvas = document.createElement("canvas") canvas.width = img.width canvas.height = img.height const ctx = canvas.getContext("2d") ctx.drawImage(img, 0, 0) canvas.toBlob(function (e) { resolve(e) }, "image/png", 1) } })
将canvas转成file
将canvas转成Blob,然后将Blob转成file即可,可看最开始的文件类型转换流程图。
或将canvas转成dataURL,然后将dataURL转成file即可,可看最开始的文件类型转换流程图。blob转arrayBuffer
利用FileReader.readAsArrayBuffer()function blobToArrayBuffer (blob, callback) { const reader = new FileReader() reader.readAsArrayBuffer(blob) reader.onload = function () { callback(this.result) } } let blob = new Blob([1, 2, 3, 4, 5]) blobToArrayBuffer(blob, (arrayBuffer) => { console.log(arrayBuffer) }) // ArrayBuffer(5)
arrayBuffer转blob
利用new Blob()function arrayBufferToBlob (arrayBuffer, type) { return new Blob([arrayBuffer], { type }) } blobToArrayBuffer(new Blob([1, 2, 3, 4, 5]), (arrayBuffer) => { console.log(arrayBufferToBlob(arrayBuffer, "text/plain")) // Blob {size: 5, type: "text/plain"} })————————————————
版权声明:本文为CSDN博主「定栓」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/weixin_44116302/article/details/122064841
三星GalaxyS22系列海外推送第四个OneUI5测试版IT之家10月6日消息,三星美国首先开始推送OneUI5Beta4版本,欧版韩版紧随其后,国际版和国行机型可能还需要多等几天。根据多个用户反馈,Beta4更新软件版本号为ZVJ2,
匈牙利总理欧盟对俄制裁造成能源价格飙升当地时间10月6日,匈牙利总理欧尔班在社交媒体上发帖称,欧盟对俄罗斯实施的制裁造成了天然气和电力价格飙升,这是目前整个欧洲面临的严重问题,它将加剧通货膨胀摧毁企业并威胁就业。欧尔班
想创业系列临期食品店靠谱吗?前言下沉市场是最近几年的创业风口,当某些原因导致大家荷包迅速收紧,一二线城市也开始出现了蓬勃发展的下沉经济,临期食品店成为了很多消费者的选择,那么这个老赛道会在当下成为新的创业风口
山西年底前消费者可享系列消费优惠政策20元以上的发票可以抽奖,家电以旧换新有了专用消费券,通用消费券滚动投放10月5日消息,我省从现在开始到12月31日将继续实施一系列促进消费措施。省政府办公厅公布的关于进一步释放消
谷歌Pixel7系列参数曝光自研TensorG2处理器,6。7英寸120Hz屏幕预计谷歌将会在这几天发布旗下新一代的旗舰手机也就是Pixel7系列手机,包括Pixel7以及Pixel7Pro,不过就在发布会正式到来之前,网上已经曝光了关于这两款手机的详细参数表
引领低碳转型,加速新赛道布局,奇瑞定义中国智造标杆一个品牌的科技日活动,能让业内专家大咖云集,活动阵容高规格以致影响整个行业,成为洞悉行业发展前沿风向标,不易一个品牌的战略发布,能吸引央视名嘴站台主持,央媒行业媒体竞相跟踪报道,很
利用Vue自定义指令让你的开发变得更优雅前段时间在用框架开发H5页面时,碰到框架中的组件内置了一个属性用于适配异形屏,虽然是组件内部实现的,但这个方式让我萌生一个想法能不能自己写一个属性来实现这样的功能?经过一番思索,我
红米K60部分配置参数曝光红米K系列手机算得上是红米的旗舰产品,继承了小米数字系列以前主打高性价比路线,被称作旗舰焊门员。红米K50于2022年3月发布,下一代红米K60据推测可能会在2023年春节后发布,
苹果手机杀熟是怎么回事?看完才知道,踩坑国内这些套路hello我是你们的der(得儿)一个爱好数码喜欢谈论时事热点,挖掘性价比东西的宅,der友们点个关注叭!不知道国庆长假,有没有小伙伴去旅游?最近有小伙伴私信der,说外出游玩无论
奇瑞新能源小蚂蚁l车内健康,现在蚁开启奇瑞新能源小蚂蚁l车内健康,现在蚁开启很多家庭购买第二辆车时会选择购买一款小型车主要目的是为了好开好停主要用途是上下班代步或是接送小孩上下学对于小孩经常要坐的车,环保是至关重要的,
想安装带元音符号的希伯来文键盘吗?苹果手机如何安装带有元音符号的希伯来文键盘呢?操作步骤首先在手机里面找到设置通用键盘再次点击键盘添加键盘,下滑找到希伯来语(这是苹果自带的希伯来文输入法,没有元音符号的)但是,如果