image 各種型態轉換(blob, dataURL, canvas) in JavaScript

简介: image 各種型態轉換(blob, dataURL, canvas) in JavaScript

blob 轉成 dataURL

blob 和 file 都可以使用,從 blob 讀取資料的唯一方式就是使用 FileReader。

functionblobtoDataURL(blob,callback){

varfr=newFileReader();

fr.onload=function(e){

callback(e.target.result);

};

fr.readAsDataURL(blob);

}


blobtoDataURL(blob,function(dataURL){

console.log(dataURL);

});

dataURL 繪製到 canvas

新增一個 image 和 canvas,image src 屬性帶入 dataURL,然後用 canvas drawImage 繪製剛才新增的 image。之後就可以用 canvas 來幫 image 做很多事,例如裁切、縮放、打字、畫線條等等。

varimg=newImage(),

canvas=document.createElement('canvas'),

ctx=canvas.getContext('2d');

img.onload=function(){

ctx.drawImage(img);

};

img.src=dataURL;

canvas 轉成 dataURL

這個最簡單。

canvas.toDataURL();// 預設會轉成 image/png

canvas.toDataURL('image/jpeg',0.8);// 可指定 jpeg 品質

canvas 轉成 blob

目前只有 Firefox 支援,其他瀏覽器可使用canvas-to-blob.js

canvas.toBlob(function(blob){

console.log(blob);

},"image/jpeg",0.8);

dataURL 轉成 blob

資源來源:stackoverflow

functiondataURItoBlob(dataURI){

// convert base64/URLEncoded data component to raw binary data held in a string

varbyteString;

if(dataURI.split(',')[0].indexOf('base64')>=0)

byteString=atob(dataURI.split(',')[1]);

else

byteString=unescape(dataURI.split(',')[1]);


// separate out the mime component

varmimeString=dataURI.split(',')[0].split(':')[1].split(';')[0];


// write the bytes of the string to a typed array

varia=newUint8Array(byteString.length);

for(vari=0;i<byteString.length;i++){

ia[i]=byteString.charCodeAt(i);

}


returnnewBlob([ia],{type:mimeString});

}

目录
相关文章
|
1月前
|
JavaScript Java 测试技术
基于springboot+vue.js+uniapp的客户关系管理系统附带文章源码部署视频讲解等
基于springboot+vue.js+uniapp的客户关系管理系统附带文章源码部署视频讲解等
59 2
|
1月前
|
JavaScript Java 测试技术
基于springboot+vue.js+uniapp的医院综合管理系统附带文章源码部署视频讲解等
基于springboot+vue.js+uniapp的医院综合管理系统附带文章源码部署视频讲解等
29 5
|
16天前
|
JavaScript 前端开发
JS:一篇文章带你搞懂什么是异步
JS:一篇文章带你搞懂什么是异步
|
1月前
|
JavaScript Java 测试技术
基于springboot+vue.js+uniapp的宠物援助平台附带文章源码部署视频讲解等
基于springboot+vue.js+uniapp的宠物援助平台附带文章源码部署视频讲解等
54 4
|
1月前
|
JavaScript Java 测试技术
基于springboot+vue.js+uniapp的宠物交易平台附带文章源码部署视频讲解等
基于springboot+vue.js+uniapp的宠物交易平台附带文章源码部署视频讲解等
46 4
|
1月前
|
JavaScript Java 测试技术
基于springboot+vue.js+uniapp的大学生入伍人员管理系统附带文章源码部署视频讲解等
基于springboot+vue.js+uniapp的大学生入伍人员管理系统附带文章源码部署视频讲解等
59 4
|
1月前
|
JavaScript Java 测试技术
基于springboot+vue.js+uniapp的小区物流配送系统附带文章源码部署视频讲解等
基于springboot+vue.js+uniapp的小区物流配送系统附带文章源码部署视频讲解等
54 3
|
1月前
|
JavaScript Java 测试技术
基于springboot+vue.js+uniapp宿舍管理系统的附带文章源码部署视频讲解等
基于springboot+vue.js+uniapp宿舍管理系统的附带文章源码部署视频讲解等
50 3
|
1月前
|
JavaScript Java 测试技术
基于springboot+vue.js+uniapp的家政平台附带文章源码部署视频讲解等
基于springboot+vue.js+uniapp的家政平台附带文章源码部署视频讲解等
37 3
|
1月前
|
JavaScript Java 测试技术
基于springboot+vue.js+uniapp的宠物医院系统附带文章源码部署视频讲解等
基于springboot+vue.js+uniapp的宠物医院系统附带文章源码部署视频讲解等
33 2

热门文章

最新文章