javascript ~~canvas url blob轉換

1.canvas轉換爲dataURL (從canvas獲取dataURL)

var dataurl = canvas.toDataURL('image/png');
var dataurl2 = canvas.toDataURL('image/jpeg', 0.8);

2.File對象轉換爲dataURL、Blob對象轉換爲dataURL

function readBlobAsDataURL(blob, callback) {
   var a = new FileReader();
   a.onload = function(e) {callback(e.target.result);};
   a.readAsDataURL(blob);
}
//example:
readBlobAsDataURL(blob, function (dataurl){
   console.log(dataurl);
});
readBlobAsDataURL(file, function (dataurl){
   console.log(dataurl);
});

3.dataURL轉換爲Blob對象、dataURL轉換爲File對象

function dataURLtoBlob(dataurl) {
   var arr = dataurl.split(','), mime = arr[0].match(/:(.*?);/)[1],
       bstr = atob(arr[1]), n = bstr.length, u8arr = new Uint8Array(n);
   while(n--){
       u8arr[n] = bstr.charCodeAt(n);
   }
   return new Blob([u8arr], {type:mime});
}
function dataURLtoFile(dataurl, filename) {
   var arr = dataurl.split(','), mime = arr[0].match(/:(.*?);/)[1],
       bstr = atob(arr[1]), n = bstr.length, u8arr = new Uint8Array(n);
   while(n--){
       u8arr[n] = bstr.charCodeAt(n);
   }
   return new File([u8arr], filename, {type:mime});
}
//test:
var blob = dataURLtoBlob('data:text/plain;base64,YWFhYWFhYQ==');
var file = dataURLtoFile('data:text/plain;base64,YWFhYWFhYQ==', 'test.txt');

4.dataURL圖片數據繪製到canvas

var img = new Image();
img.onload = function(){
    canvas.drawImage(img);
};
img.src = dataurl;

5.File,Blob的圖片文件數據繪製到canvas

readBlobAsDataURL(file, function (dataurl){
   var img = new Image();
   img.onload = function(){
       canvas.drawImage(img);
   };
   img.src = dataurl;
});

6.Canvas轉換爲Blob對象並使用Ajax發送

var dataurl = canvas.toDataURL('image/png');
var blob = dataURLtoBlob(dataurl);
//使用ajax發送
var fd = new FormData();
fd.append("image", blob, "image.png");
var xhr = new XMLHttpRequest();
xhr.open('POST', '/server', true);
xhr.send(fd);



發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章