首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何将动态div转换为png图像

如何将动态div转换为png图像
EN

Stack Overflow用户
提问于 2015-10-19 13:49:12
回答 2查看 962关注 0票数 1

我这里有3个动态div,正在尝试将动态div转换为图像格式,如何将动态div转换为图像格式?有什么想法吗?

并且还需要隐藏动态div而只显示图像,请提供小提琴

代码语言:javascript
运行
复制
Canvas2Image.saveAsPNG(canvas); 
$("#img-out").append(canvas);
EN

回答 2

Stack Overflow用户

发布于 2015-10-19 13:52:53

http://jsfiddle.net/8ypxW/3/

代码语言:javascript
运行
复制
$(function() { 
    $("#btnSave").click(function() { 
        html2canvas($("#widget"), {
            onrendered: function(canvas) {
                theCanvas = canvas;
                document.body.appendChild(canvas);

                // Convert and download as image 
                Canvas2Image.saveAsPNG(canvas); 
                $("#img-out").append(canvas);
                // Clean up 
                //document.body.removeChild(canvas);
            }
        });
    });
}); 

请查看此以供参考。

票数 1
EN

Stack Overflow用户

发布于 2015-10-19 14:40:21

我在jQuery的帮助下做了一个快速实现,并快速浏览了MDN的一个canvas examples。这肯定不是最好的方法,但你会明白的。

还有一件事是,当你使用Drawing DOM content to Canvas时,你可能需要注意安全问题。

代码语言:javascript
运行
复制
jQuery('#htmlBlock').html(jQuery('#editor').val());
jQuery('#editor').on('change', function() {
  jQuery('#htmlBlock').html(jQuery(this).val());
});

jQuery('#html2img').on('click', function() {
  var canvas = document.createElement('canvas');
  var ctx = canvas.getContext('2d');
  template[3] = jQuery('#htmlBlock').html();

  var svg = new Blob([template.join('')], {
    type: 'image/svg+xml;charset=utf-8'
  });
  var url = DOMURL.createObjectURL(svg);
  jQuery('#imgitem').attr('src', url);
});

var DOMURL = window.URL || window.webkitURL || window;
var template = [
  '<svg xmlns="http://www.w3.org/2000/svg" width="200" height="200">',
  '<foreignObject width="100%" height="100%">',
  '<div style="background-color: #AAA;max-width: 140px; padding: 10px;" xmlns="http://www.w3.org/1999/xhtml">',
  '',
  '</div>',
  '</foreignObject>',
  '</svg>'
];
代码语言:javascript
运行
复制
#htmlBlock {
  background-color: #AAA;
  max-width: 140px;
  padding: 10px;
}
label {
  display: block;
  margin: 10px 0;
}
代码语言:javascript
运行
复制
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
<textarea id="editor" placeholder="editor">HelloWorld</textarea>

<button id="html2img">HTML2IMAGE</button>

<label>
  HTML:
  <div id="htmlBlock">
  </div>
</label>

<label>
  Image:
  <div>
    <img id="imgitem" />
  </div>
</label>

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/33207421

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档