
1、将blob转成file
1 2 3 4 5
| export function blobToFile(blob, filename, type) { return new File([blob], filename, { type }) }
blobToFile('test info', 'test', 'text/plain' )
|
2、将file转换成DataURL
1 2
| <input type="file" id="file"> <img id="img">
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22
| 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) } }
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 } }
|
3、将DataURL转成file
1 2 3 4 5 6 7 8
| export function 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==', '测试文件')
|
4、将canvas转成DataURL
1
| <input type="file" accept="image/*" id="file">
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17
| 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)) } }) }
|
5、将DataURL转成canvas
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
| function 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))
|
6、将canvas转成blob
1
| <input type="file" accept="image/*" id="file">
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18
| 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) } })
|
7、将canvas转成file
将canvas转成Blob,然后将Blob转成file即可,可看最开始的文件类型转换流程图。或将canvas转成dataURL,然后将dataURL转成file即可,可看最开始的文件类型转换流程图。
8、blob转arrayBuffer
1 2 3 4 5 6 7 8 9
| 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) })
|
9、arrayBuffer转blob
1 2 3 4 5 6 7
| function arrayBufferToBlob (arrayBuffer, type) { return new Blob([arrayBuffer], { type }) } blobToArrayBuffer(new Blob([1, 2, 3, 4, 5]), (arrayBuffer) => { console.log(arrayBufferToBlob(arrayBuffer, 'text/plain')) })
|
10、 ArrayBuffer 转 base64
1 2 3 4
| const arrayBufferToBase64Img = (buffer) => { const str = String.fromCharCode(...new Uint8Array(buffer)); return `data:image/jpeg;base64,${window.btoa(str)}`; }
|