【问题标题】:How to save html2canvas image into System Folder in jquery如何将 html2canvas 图像保存到 jquery 中的系统文件夹中
【发布时间】:2015-11-09 18:45:14
【问题描述】:

我在这个表单中有一个 id="form1" 的表单我有一个图表。现在我正在使用 html2canvas 来获取这个 form1 的图像。这是我的代码..

<script type="text/javascript">

      $(document).ready(function () {
          $('#add_button').click(function () {
              alert("hiii");
              $('form1').html2canvas();
              var queue = html2canvas.Parse();
              var canvas = html2canvas.Renderer(queue, { elements: { length: 1} });
              var img = canvas.toDataURL();
              window.open(img);
              alert("Hello");
          });
      });

  </script>

<form id="form1" runat="server">
<div style="padding-left:150px">
  <asp:Literal ID="FCLiteral1" runat="server"></asp:Literal>
</div>
<div style="padding-left:350px"><b>Demo</b></div>
</form>

 <input type="submit" id="add_button" value="Take Screenshot Of Div" " />

所以我的问题是如何将此图像保存到我的系统硬盘中..请帮助我。

【问题讨论】:

  • “系统硬盘”?在您的服务器或客户端中?

标签: c# jquery asp.net html2canvas


【解决方案1】:

系统硬盘?没看懂,服务器还是客户端?

客户

如果你想让用户自动下载图片,你需要修改Data URI scheme

试试这个:

在css中添加

#myHideFrame {
    position: absolute;
    top: -9999px;
    width: 1px;
    height: 1px;
}

在Javascript中添加

var img = canvas.toDataURL();
var frame = document.getElementById("myHideFrame");
if(!frame) {
    frame = document.createElement("iframe");
    frame.id = "myHideFrame";
    document.body.appendChild(frame);
}
frame.src = img.replace(/^data[:]image\/(png|jpg|jpeg)[;]/i, "data:application/octet-stream;");

不幸的是,这个例子没有显示名称,为此你必须做这样的事情(用户需要点击链接):

var img = canvas.toDataURL();
var link = document.createElement("a");
link.download = "photo.png"; //Setup name file
link.href = img.replace(/^data[:]image\/(png|jpg|jpeg)[;]/i, "data:application/octet-stream;");
document.body.appendChild(link);

服务器

如果你想保存在服务器上,那么你需要使用Ajax,例如Jquery:

Javascript 文件:

var img = canvas.toDataURL().replace(/^data[:]image\/(png|jpg|jpeg)[;]base64,/i, "");
$.ajax({
    "type": "POST",
    "url": "upload.aspx/UploadImage",
    "data": { 
        "imageData": img //Send to WebMethod
    }
}).done(function(o) {
    console.log(["Response:" , o]); 
});

你的upload.aspx.cs文件需要:

...
[WebMethod()]
public static void UploadImage(string imageData)
{
    string fileNameWitPath = "custom_name.png";
    using (FileStream fs = new FileStream(fileNameWitPath, FileMode.Create))
    {
        using (BinaryWriter bw = new BinaryWriter(fs))
        {
            byte[] data = Convert.FromBase64String(imageData);//convert from base64
            bw.Write(data);
            bw.Close();
        }
    }
}
...

查看详情:http://www.dotnetfunda.com/articles/show/1662/saving-html-5-canvas-as-image-on-the-server-using-aspnet

【讨论】:

【解决方案2】:

客户端端保存图像的更简单的解决方案是生成图像数据并将其附加到带有download属性的&lt;a&gt;标签。

这是我的例子:

HTML:

<a href="#" class="downloadAsImage hide" download>Download</a>

JS:

$(function() {
    html2canvas($('.main'), {
        onrendered: function(canvas) {
            $('.downloadAsImage').attr('href', canvas.toDataURL()).removeClass('hide');
        }
    });
});

旁注:请记住,您不能通过 JS 点击 $('.downloadAsImage'),因为它有 download 属性。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-01-20
    • 1970-01-01
    • 2018-01-29
    • 2013-09-01
    • 2021-04-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多