是否可以捕获或打印html画布中显示的图像或pdf?
我希望通过画布生成图像,并能够从该图像生成png。
是否可以捕获或打印html画布中显示的图像或pdf?
我希望通过画布生成图像,并能够从该图像生成png。
当前回答
如果您正在使用jQuery(很多人都这么做),那么您可以这样实现接受的答案:
var canvas = $("#mycanvas")[0];
var img = canvas.toDataURL("image/png");
$("#elememt-to-write-to").html('<img src="'+img+'"/>');
其他回答
如果您正在使用jQuery(很多人都这么做),那么您可以这样实现接受的答案:
var canvas = $("#mycanvas")[0];
var img = canvas.toDataURL("image/png");
$("#elememt-to-write-to").html('<img src="'+img+'"/>');
如果你想让画布消失,你可以使用这个片段
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
</head>
<body>
<canvas id=canvas width=200 height=200></canvas>
<iframe id='img' width=200 height=200></iframe>
<script>
window.onload = function() {
var canvas = document.getElementById("canvas");
var context = canvas.getContext("2d");
context.fillStyle = "green";
context.fillRect(50, 50, 100, 100);
document.getElementById('img').src = canvas.toDataURL("image/jpeg");
console.log(canvas.toDataURL("image/jpeg"));
}
</script>
</body>
</html>
另一个有趣的解决方案是PhantomJS。这是一个可以用JavaScript或CoffeeScript编写脚本的无头WebKit。
其中一个用例是屏幕捕获:您可以通过编程方式捕获web内容,包括SVG和画布,和/或使用缩略图预览创建网站屏幕截图。
最好的切入点是屏幕捕获wiki页面。
这是一个很好的极地时钟示例(来自RaphaelJS):
>phantomjs rasterize.js http://raphaeljs.com/polar-clock.html clock.png
是否要将页面呈现为PDF?
> phantomjs rasterize.js 'http://en.wikipedia.org/w/index.php?title=Jakarta&printable=yes' jakarta.pdf
HTML5提供Canvas.toDataURL(mimetype),它在Opera、Firefox和Safari4测试版中实现。然而,有许多安全限制(主要是与将内容从另一个来源绘制到画布上有关)。
因此,您不需要额外的库。
e.g.
<canvas id=canvas width=200 height=200></canvas>
<script>
window.onload = function() {
var canvas = document.getElementById("canvas");
var context = canvas.getContext("2d");
context.fillStyle = "green";
context.fillRect(50, 50, 100, 100);
// no argument defaults to image/png; image/jpeg, etc also work on some
// implementations -- image/png is the only one that must be supported per spec.
window.location = canvas.toDataURL("image/png");
}
</script>
理论上,这应该创建一个中间有绿色方块的图像,然后导航到该图像,但我还没有进行测试。
最初的答案是针对一个类似的问题。已修订如下:
const canvas = document.getElementById('mycanvas')
const img = canvas.toDataURL('image/png')
使用IMG中的值,您可以将其写入新图像,如下所示:
document.getElementById('existing-image-id').src = img
or
document.write('<img src="'+img+'"/>');