使用src blob将画布转换为img

安迪生菌

我正在从画布创建PNG文件,但是在我想将画布显示为img元素之前,使用blob作为img的src。到目前为止我尝试过的是:

canvas = document.getElementById("canvas");
//Get data from canvas
img_b64 = canvas.toDataURL('image/png');
//Create PNG
png = img_b64.split(',')[1];
//Create new img
img = document.createElement("img");
img.src = img_b64;
//Append img to document
//Save png

这可行,但是img_b64我不想让blob成为img的src,如下所示:

//Create blob from new PNG
blob = new Blob([window.atob(png)], { type: 'image/png', encoding: 'utf-8' });
//Create new img with blob as src
img = document.createElement("img");
img.src = URL.createObjectURL(blob);
//Append img to document
//Save png

上面的代码仅向我显示了一个空的img。有没有办法做到这一点,还是我必须先创建png文件,然后再为其创建blob?

安迪生菌

我刚刚找到了一个使用此问题的答案的解决方案:将Data URI转换为File然后追加到FormData使用该dataURItoBlob函数,我的代码是:

canvas = document.getElementById("canvas");
//Get data from canvas
img_b64 = canvas.toDataURL('image/png');
//Create blob from DataURL
blob = dataURItoBlob(img_b64)
img = document.createElement("img");
img.src = URL.createObjectURL(blob);
//Insert image

dataURItoBlob函数:

function dataURItoBlob(dataURI) {
    // convert base64/URLEncoded data component to raw binary data held in a string
    var byteString;
    if (dataURI.split(',')[0].indexOf('base64') >= 0)
        byteString = atob(dataURI.split(',')[1]);
    else
        byteString = unescape(dataURI.split(',')[1]);

    // separate out the mime component
    var mimeString = dataURI.split(',')[0].split(':')[1].split(';')[0];

    // write the bytes of the string to a typed array
    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});
}

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

使用ropper js将画布转换为blob

来自分类Dev

使用CANVG脚本将内联SVG转换为画布

来自分类Dev

PHP URL转换为html img src

来自分类Dev

使用 javascript 将 Laravel 变量转换为 img

来自分类Dev

使用jsoup获取img src

来自分类Dev

使用jQuery修改img src

来自分类Dev

使用Python将BLOB图像转换为PNG,JPG

来自分类Dev

使用axios将Blob URL转换为文件对象

来自分类Dev

使用 multer 将 Blob 元素转换为 .jpg

来自分类Dev

使用Blob作为src映像

来自分类Dev

使用属性转换将 HTML5 img 转换为 AMP amp-img

来自分类Dev

如何在img标签src中使用Blob URL?

来自分类Dev

将numpy数组转换为html img标签的src可读的字节串

来自分类Dev

img ng-src:TypeError:将圆形结构转换为JSON

来自分类Dev

如何使用php将IMG(url.jpg)转换为html img?

来自分类Dev

使用画布将文件输入到Blob

来自分类Dev

使用React.js在画布上绘制图像后无法将画布转换为图像

来自分类Dev

Enfocus将img src交换为$(this).attr('src')

来自分类Dev

使用.toDataUrl()将Chart.js画布图表转换为图像会生成空白图像

来自分类Dev

可以使用“画布”中的半径将圆形转换为椭圆形

来自分类Dev

使用src img将Attr设置为最接近的<a>

来自分类Dev

使用CSS将Img Src更改为父A href

来自分类Dev

无法使用JavaScript更改img元素的src

来自分类Dev

如何使用<img src =“”>中的属性?

来自分类Dev

jQuery使用td值作为img的src

来自分类Dev

在Ember CLI中使用<img> src

来自分类Dev

如何使用JavaScript更改img src?

来自分类Dev

使用HTML Agility Pack设置img src

来自分类Dev

jQuery使用td值作为img的src