javascript - 如何使用 javascript 从图像 URL 获取 Blob 数据

标签 javascript jquery

我有一个解决方案,但它花费了太多时间。这是我的解决方案。

//------------ Image url to base64 -------------//

    function convertImgToBase64(url, callback, outputFormat){
        var img = new Image();
        img.crossOrigin = 'Anonymous';
        img.onload = function(){
        var canvas = document.createElement('CANVAS'),
        ctx = canvas.getContext('2d'), dataURL;
        canvas.height = this.height;
        canvas.width = this.width;
        ctx.drawImage(this, 0, 0);
        dataURL = canvas.toDataURL(outputFormat);
        callback(dataURL);
        canvas = null; 
     };
       img.src = url;
    }

   //------------ convert base64 into Blob -------------//
   function dataURItoBlobImg(dataURI) {
     var byteString;
     if (dataURI.split(',')[0].indexOf('base64') >= 0)
        byteString = atob(dataURI.split(',')[1]);
     else
        byteString = unescape(dataURI.split(',')[1]);
     var mimeString = dataURI.split(',')[0].split(':')[1].split(';')[0];
     var ia = new Uint8Array(byteString.length);
     for (var i = 0; i < byteString.length; i++) {
         ia[i] = byteString.charCodeAt(i);
     }
     return new Blob([ia], {type:mimeString});
    }

现在的事情是首先我必须将图像转换为base64,然后我可以转换为Blob,有什么方法可以直接从图像URL转换为Blob。

谢谢。

最佳答案

你尝试过吗:

HTMLCanvasElement.toBlob()

HTMLCanvasElement.toBlob() 方法创建一个表示 Canvas 中包含的图像的 Blob 对象;该文件可以缓存在磁盘上或存储在内存中,具体由用户代理决定。如果未指定类型,则图像类型为 image/png。创建的图像分辨率为 96dpi。 第三个参数与 image/jpeg 图像一起使用来指定输出的质量。

示例来自 https://developer.mozilla.org/en-US/docs/Web/API/HTMLCanvasElement/toBlob

var canvas = document.getElementById("canvas");

canvas.toBlob(function(blob) {
  var newImg = document.createElement("img"),
      url = URL.createObjectURL(blob);

  newImg.onload = function() {
    // no longer need to read the blob so it's revoked
    URL.revokeObjectURL(url);
  };

  newImg.src = url;
  document.body.appendChild(newImg);
});

关于javascript - 如何使用 javascript 从图像 URL 获取 Blob 数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33432006/

相关文章:

javascript - REACTJS 中的警告 : flattenChildren(. ..) : Encountered two children with the same key, `false`

javascript - 如何避免出现 "No ' Access-Control-Allow-Origin' header ...“javascript 错误

javascript - 谷歌线图滚动/缩放问题

javascript - 如何使 Bootstrap Tour 应用 GET 参数

javascript - jQuery 滚动内容与导航

jQuery 数字验证仅允许全选、复制和粘贴键

javascript - 使用 jQuery AJAX 获取 "syntax error Cannot GET/xyz"

javascript - 溢出自动div重叠Bootstrap日期时间选择器

javascript - jquery ajax方法未在远程服务器上触发

javascript - 如何保留用JS onclick函数更改的innerhtml内容