【发布时间】:2017-11-16 17:31:15
【问题描述】:
我正在使用此代码创建带有 blob url 的 img 标签:
blob = canvas.toBlob(function (blob) {
var newImg = window.parent.document.createElement('img'),
url = window.URL.createObjectURL(blob);
newImg.onload = function () {
// no longer need to read the blob so it's revoked
window.URL.revokeObjectURL(url);
};
newImg.src = url;
console.log(url); // prints blob url of blank/white image
window.parent.document.body.appendChild(newImg);
}, 'image/png', 1.0);
console.log(blob); // returns undefined
是的,我得到了 blob url,但是当我在 url 地址中打开 url 时,图像只显示空白/白色图像。
我做错了什么?
我什至尝试过使用 toDataURL():
var canvasblobapp = (function (jq) {'use strict';
return {
pageReady: function () {
var img = new Image(),
canvas = document.getElementById('myCanvas'),
ctx = canvas.getContext('2d'),
blob = null,
base64String = "",
newImg = new Image(),
imgTag = document.createElement("img");
img.onload = function () {
canvas.width = this.width;
canvas.height = this.height;
//ctx.drawImage(img, 0, 0);
ctx.beginPath();
ctx.moveTo(170, 80);
ctx.bezierCurveTo(130, 100, 130, 150, 230, 150);
ctx.bezierCurveTo(250, 180, 320, 180, 340, 150);
ctx.bezierCurveTo(420, 150, 420, 120, 390, 100);
ctx.bezierCurveTo(430, 40, 370, 30, 340, 50);
ctx.bezierCurveTo(320, 5, 250, 20, 250, 50);
ctx.bezierCurveTo(200, 5, 150, 20, 170, 80);
ctx.closePath();
ctx.lineWidth = 5;
ctx.fillStyle = '#8ED6FF';
ctx.fill();
ctx.strokeStyle = '#0000ff';
ctx.stroke();
};
img.src = 'img/jabolche.png';
imgTag.src = canvas.toDataURL("image/png", 1.0);
imgTag.id = "novaSlika";
document.getElementById('result').appendChild(imgTag);
}
};
}($));
$(document).ready(canvasblobapp.pageReady);
然而,我得到空的图像与SCR填充有 “A” 字母: “数据:图像/ PNG; BASE64,iVBORw0KGgoAAAANSUhEUgAAAeAAAAIQCAYAAABZrr0RAAAD7klEQVR4nO3BMQEAAADCoPVPbQo / oAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAlwF68QABHxjrnwAAAABJRU5ErkJggg ==” P>
好像“A”表示白色像素。不确定?
【问题讨论】:
-
你为什么使用
window.URL而不是URL?在我看来像是浏览器的问题。 -
哦,我在 Chrome 中运行它,现在我看到错误:canvas.toBlob() 不是函数。 @KobyDouek
标签: javascript url html5-canvas png blob