范文健康探索娱乐情感热点
投稿投诉
热点动态
科技财经
情感日志
励志美文
娱乐时尚
游戏搞笑
探索旅游
历史星座
健康养生
美丽育儿
范文作文
教案论文

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车内健康,现在蚁开启很多家庭购买第二辆车时会选择购买一款小型车主要目的是为了好开好停主要用途是上下班代步或是接送小孩上下学对于小孩经常要坐的车,环保是至关重要的,想安装带元音符号的希伯来文键盘吗?苹果手机如何安装带有元音符号的希伯来文键盘呢?操作步骤首先在手机里面找到设置通用键盘再次点击键盘添加键盘,下滑找到希伯来语(这是苹果自带的希伯来文输入法,没有元音符号的)但是,如果
泰国海军订购Hermes900无人机中国航空新闻网讯据飞行国际报道,泰国皇家海军已订购埃尔伯特Hermes900无人驾驶飞行器用于海上巡逻任务,目前订购数量不详。据泰国海军Facebook发帖子称,该交易价值40亿泰宁德时代2023届90所校招大学名单19所是双非高校,1所二本上榜宁德时代是一家新能源上市科技公司,是国内率先具备国际竞争力的民营动力电池制造商之一,2022年9月16日总市值达1万亿元人民币,也是蛮有实力的。目前宁德时代2023届校园招聘已经启新车硬汉依旧,智商升级,新款哈弗H9正式亮相或许目前国内品牌能支撑起硬派越野风格的厂商,长城应该算是当中的佼佼者,有其最近这段时间坦克300的风靡,也确实再次掀起了硬派越野的热潮。而作为长城品牌硬派越野当仁不让的老大哥,哈弗栓Q被小学生写进作文网络流行语会影响规范表达吗?栓Q被小学生写进作文引热议互联网流行语会影响规范表达吗?近日,一小学老师批改作业时发现学生作文写栓Q,相关视频随后登上热搜,引发网友讨论。有人认为这件事很严肃,有人认为只要正确引导昆仑神宫8个搞笑细节鬼吹灯系列最佳,三方面分析原因文叶秋臣算是潘粤明版本鬼吹灯系列的老粉丝了,所以每部必追,然后写点感受。因此,昆仑神宫这部剧早在云南虫谷播完时,就已放入想看的清单。现在剧集开播,豆瓣开分8。2,现在已上升至8。3我国5G基站单站址能耗比商用初期降低20以上工业和信息化部节能与综合利用司司长黄利斌日前表示,目前我国5G基站单站址能耗已比2019年商用初期降低20以上,全国规划在建的大型以上数据中心平均设计电能利用比值已降到1。3。下一中日韩第一财团对比,日本三菱,韩国三星,我国是哪个企业?近代全球经济发展非常之快,不但人们的生活水平直线提升,同时也诞生了资产非常庞大的富豪和企业。上篇文章我们讲了身价千亿的亚洲首富阿达尼,晋升全球第二富豪的消息,但实际上阿达尼集团的市18月,我国基础设施新开工项目5。2万个中华建设网讯(记者阎秋)日前,在国务院新闻办公室举行新闻发布会上国家统计局新闻发言人付凌晖介绍,随着专项债等建设资金的逐步到位,基础设施项目陆续开工,投资进度不断加快。18月份,基我国新能源汽车保有量占全球一半为全球提供超70光伏组件IT之家9月22日消息,据央视新闻报道,国家发改委今天举行专题新闻发布会,党的十八大以来,我国产业结构优化升级成效明显,能源绿色低碳转型成效显著,能源资源利用效率大幅提升。据国家发狂赢33分!4人得分上双,亚洲劲旅完爆倒数第1,2大归化合砍21分北京时间9月22日消息,2022年女篮世界杯开幕了,在第一比赛日B组的一场焦点较量中,亚洲劲旅日本女篮迎战排名倒数第1的马里队。经过4节较量,日本女篮以8956完爆马里队,狂赢33商务部18月我国对外非金融类直接投资4927。6亿元人民币,同比增长7。2商务部网站消息,9月22日,商务部召开例行新闻发布会。商务部新闻发言人束珏婷介绍,2022年18月,我国对外非金融类直接投资4927。6亿元人民币,同比增长7。2(折合751。1亿