简体   繁体   English

HTML2canvas和Canvas2image,下载的截图不会显示我的HTML图像

[英]HTML2canvas and Canvas2image, downloaded screenshot doesn't show my HTML images

I've been working on a HTML page that I want to convert into an image. 我一直在研究一个我想要转换成图像的HTML页面。

I have been using the html2canvas and canvas2image scripts and taken this code http://jsfiddle.net/8ypxW/3/ here that has allowed me to create a button that will take a screenshot and download my HTML page as an image. 我一直在使用html2canvas和canvas2image脚本,并在此处使用此代码http://jsfiddle.net/8ypxW/3/ ,这使我可以创建一个按钮,该按钮将截取屏幕并将我的HTML页面下载为图像。

The problem I'm having is that my downloaded screenshot image shows my text but not my image, even though they are from the same origin. 我遇到的问题是我下载的截图图像显示的是我的文字而不是我的图像,即使它们来自同一个来源。 I'm not sure if it's a problem with my HTML, HTML2canvas or canvas2image. 我不确定我的HTML,HTML2canvas或canvas2image是否存在问题。

My example is not live yet but my code is below: 我的例子还没有,但我的代码如下:

<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.6.2/jquery.min.js"></script>
<script src="html2canvas.js"></script>
<script src="Canvas2Image.js"></script>



<div id="wrapper" style="background-color: white"; width="1000px" height="900px">

<img src="header.jpg" width= "900px">
tecno diagnostics


</div><!---- End Wrapper ---->


<br/>
<input type="button" id="btnSave" value="Save PNG"/>
<div id="img-out"></div>


<script type="text/javascript">
$(function() { 
  $("#btnSave").click(function() { 
    html2canvas($("#wrapper"), {
        onrendered: function(canvas) {
            // Convert and download as image 
            Canvas2Image.saveAsPNG(canvas); 
            $("#img-out").append(canvas);
            // Clean up 
            //document.body.removeChild(canvas);
        }
    });
});
}); 
</script>

If anyone can help me out or point me in the right direction that would be much appreciated. 如果有人能帮助我或指出我正确的方向,将非常感激。

Thanks in advance 提前致谢

 document.querySelector('button').addEventListener('click', function() { html2canvas(document.querySelector('.specific'), { onrendered: function(canvas) { // document.body.appendChild(canvas); return Canvas2Image.saveAsPNG(canvas); } }); }); 
 body { margin: 0; font-family: "Helvetica Neue", Helvetica, Arial, sans-serif; font-size: 14px; line-height: 20px; color: #333; background-color: #fff; padding-left: 15px; } .btn { display: inline-block; padding: 6px 12px; margin-bottom: 0; font-size: 14px; font-weight: 400; line-height: 1.42857143; text-align: center; white-space: nowrap; vertical-align: middle; cursor: pointer; background-image: none; border: 1px solid transparent; border-radius: 4px; } .btn-default { color: #333; background-color: #fff; border-color: #ccc; } h1 { font-size: 36px; font-family: inherit; font-weight: 500; line-height: 1.1; color: inherit; } h1 small { font-size: 65%; font-weight: 400; line-height: 1; color: #777; display: block; padding-top: 15px; } .specific { background-color: #fff; } pa { padding: 5px; } 
 <script src="https://superal.github.io/canvas2image/canvas2image.js"></script> <script src="https://cdnjs.cloudflare.com/ajax/libs/html2canvas/0.4.1/html2canvas.min.js"></script> <div class="specific"> <h1>Click to Take a Screenshot & Download it! <small>using html2canvas.js + canvas2image.js</small></h1> <p>This is a simple demo.</p> <p>Use html2canvas.js to take a screenshot of a specific div and then use canvas2image.js to download the screenshot as an image locally to your filesystem.</p> <button type="button" class="btn btn-default">Take a Screenshot!</button> <p>References: <a href="http://html2canvas.hertzen.com/">html2canvas.js</a><a href="https://github.com/SuperAL/canvas2image">canvas2image.js</a> </p> </div> 

A working demo using html2canvas.js & canvas2image.js : 使用html2canvas.jscanvas2image.js的工作演示:

Click to Take a Screenshot & Download it locally! 点击获取截图并在本地下载!

You're appending canvas object to the DOM, which doesn't make much sense in this case. 您将canvas对象附加到DOM,在这种情况下没有多大意义。 You either want to convert rendered image to base64 and then append it to the DOM in the img tag or just call a saveAsPng() method to save image to the file system. 您要么将渲染图像转换为base64,然后将其附加到img标记中的DOM,或者只是调用saveAsPng()方法将图像保存到文件系统。

Try this, if you would like to append image to the DOM: 如果您想将图像附加到DOM,请尝试此操作:

html2canvas(element, {
    onrendered: function(canvas) {
      var img = canvas.toDataURL("image/png");
      $('body').append('<img src="'+img+'"/>');
    }
  });

Or this, if you would like to save it.: 或者,如果你想保存它:

$(function() { 
  $("#btnSave").click(function() { 
      html2canvas(document.body, {
          onrendered: function(canvas) {
              return Canvas2Image.saveAsPNG(canvas);
          }
      });
  })
});

Haven't tried the second snippet, but it should work. 没试过第二个片段,但它应该工作。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM