【问题标题】:canvas.toDataURL() not working properly [duplicate]canvas.toDataURL() 无法正常工作[重复]
【发布时间】:2015-09-06 05:17:30
【问题描述】:

我有一个画布,我在其中上传带有以下代码的图像:

function handleImage(e){
    var reader = new FileReader();
    reader.onload = function(event){
        var img = new Image();
        img.onload = function(){
            canvas.width = img.width;
            canvas.height = img.height;
            ctx.drawImage(img,0,0);
        }
        img.src = event.target.result;
    }
    reader.readAsDataURL(e.target.files[0]);
}

现在我想使用canvas.toDataURL() 将图像加载到另一个画布。代码是:

var dataURL = canvas.toDataURL();
drawDataURIOnCanvas(dataURL,canvas2);

    function drawDataURIOnCanvas(dataURL, name_of_canvas) {

    var myCanvas = document.getElementById(name_of_canvas);
    var img3 = new Image;
    var ctx2 = myCanvas .getContext('2d');
    img3.onload = function(){
       ctx2.drawImage(img3,0,0); // Or at whatever offset you like
    };
    img3.src = dataURL;
}

如果我把它放在一个工作的 url 上就好了。但是从我尝试过的任何图片中生成的网址都显示为

数据:图像/ PNG; BASE64,iVBORw0KGgoAAAANSUhEUgAAASwAAACWCAYAAABkW7XSAAAAxUlEQVR4nO3BMQEAAADCoPVPbQhfoAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOA1v9QAATX68 / 0AAAAASUVORK5CYII =。

如果您尝试使用它,它不会生成画布中的飞机照片。如何使用函数toDataURL 在另一个画布上绘制图像?

【问题讨论】:

  • 如果您尝试使用它,它不会生成画布中的飞机照片
  • 我有 edit-ed 你的问题来解释 不起作用 的确切含义。在等待答案时,您可以拨打tour 并访问help center
  • 我在您的代码中看到了一些...关闭的内容。在此处删除画布名称变量周围的引号:var myCanvas = document.getElementById('name_of_canvas');,在此处使用 myCanvas 而不是 canvasvar ctx2 = canvas.getContext('2d');
  • 谢谢你修复,虽然这不是问题,它在我的错之前在复制粘贴时工作,问题是它没有为任何图片提供正确的 dataurl 值。在你的系统中,你能做到这一点吗?
  • 您需要在 在画布上绘制图像之后调用 toDataURL。否则,你的画布当然是空的......

标签: javascript html canvas data-url


【解决方案1】:

您可以在 developer.mozilla.org 查看使用 HTMLCanvasElement.toDataURL() 的示例

toDataURL 返回有效的 base64 编码图像。所以问题是如何将此图像分配给第二个画布。

【讨论】:

  • 没有。我已将有效的 base 64 传递给另一个画布。至少在我看来,问题出在 dataURL 上。不过,如果您可以使用上面的代码在第一个画布上上传图像并获得有效的 64,我将很乐意接受答案:)
猜你喜欢
  • 2012-12-16
  • 2015-11-26
  • 2017-07-15
  • 2016-05-06
  • 2016-05-12
  • 2018-07-19
  • 2018-10-21
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多