如何将从输入字段获取的画布名称与Javascript中的画布合并?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何将从输入字段获取的画布名称与Javascript中的画布合并?相关的知识,希望对你有一定的参考价值。

最初我正在合并画布和下载画布时要分配给它的名称var(其中名称是从输入字段获取的)。但我不想下载画布,而是想合并画布及其名称并将其转换为图像数据(base 64),然后将其移动到服务器,我将其解码为图像。

如何合并2个变量,然后使用DataURL将其转换为图像数据?

Js代码:

  var name = $("#ContentPlaceHolder1_HiddenField1").val();

  var mergeCanvas = $('<canvas>')
        .attr({
            width: $(img).width(),
            height: $(img).height()
        });

  var mergedContext = mergeCanvas[0].getContext('2d');
  mergedContext.clearRect(0, 0, $(img).width(), $(img).height());
  mergedContext.drawImage(img, 0, 0);
  mergedContext.drawImage(canvas, 0, 0);

  This.downloadCanvas(mergeCanvas[0], name);
答案

如果我正确理解您的问题,您想让用户选择在输入字段中指定文件名,然后下载具有给定文件名的画布内容?

在这种情况下,您可以创建一个链接元素,其中画布的数据URL为“href”属性,文件名为“download”属性。

假设您的html看起来大致如下:

<p>
  <label>
    File name: <input id="filename">
    <button id="save">Download</button>
  </label>
</p>
<canvas width="250" height="250"></canvas>

然后你可以在javascript中执行以下操作:

var canvas = document.querySelector('canvas')
document.querySelector('#save').addEventListener('click', function () {
  var filename = document.querySelector('#filename').value
  var downloadLink = document.createElement('a')
  downloadLink.setAttribute('href', canvas.toDataURL())
  downloadLink.setAttribute('download', filename)
  downloadLink.click();
})

Here is a working sample

以上是关于如何将从输入字段获取的画布名称与Javascript中的画布合并?的主要内容,如果未能解决你的问题,请参考以下文章

如何从 Angular2 FormControl 对象中获取输入字段的名称?

如何自动下载画布图像?

画布线性渐变采用另一个输入类型颜色字段的值

如何使用记录的名称获取记录的 ID?

如何使用ajax将从jquery for循环创建的输入值发送到php [重复]

如何在 HTML5 画布上绘图