从html内容保存/导出图像文件?

时间:2012-01-31 07:16:14

标签: javascript jquery html image

我有一个场景,我正在创建动态html内容,我需要使用php,jQuery和JavaScript [或者如果可能的话,使用任何其他内容]将html内容导出/保存到图像文件中。

4 个答案:

答案 0 :(得分:5)

答案 1 :(得分:3)

您可以使用HTML5画布和toDataURL方法。例如:

var capture = function() {
  var root = document.documentElement;
  var canvas = document.createElementNS('http://www.w3.org/1999/xhtml', 'html:canvas');
  var context = canvas.getContext('2d');
  var selection = {
    top: 0,
    left: 0,
    width: root.scrollWidth,
    height: root.scrollHeight,
  };

  canvas.height = selection.height;
  canvas.width = selection.width;

  context.drawWindow(
    window,
    selection.left,
    selection.top,
    selection.width,
    selection.height,
    'rgb(255, 255, 255)'
  );

  return canvas.toDataURL('image/png', '');
};

您可以调整顶部,左侧,宽度和高度以仅捕获网页的一部分。

结果是数据URI字符串。您可以将其发送到您的服务器或在另一个画布上绘制:

  var canvas = document.getElementById('captured');
  var ctx = canvas.getContext('2d');
  var image = new Image();
  image.src = capture();

  // the image is not immediately usable
  $(image).load(function() { // jquery way
    canvas.width = image.width;
    canvas.height = image.height;
    ctx.drawImage(image, 0, 0);
  });

您的插件可能使用此方法。您还可以查看其源代码。

编辑:要使用JQuery将其发送到您的服务器,您可以执行以下操作:

$("#send-capture-button").click(function() {
  $.post("/url-to-send-image-to", {image_data: capture()})
});

在服务器端,您必须解码数据URL。

基于“MichaëlWitrant”的答案 看着 : Compile/Save/Export HTML as a PNG Image using Jquery

答案 2 :(得分:2)

我自己放了画布,上面没有使用createElement行 您可能需要在drawWindow()之前添加此行以获取用户的安全权限。见http://murfy.de/read/webgl-drawWindow

netscape.security.PrivilegeManager.enablePrivilege('UniversalXPConnect');

如果你想将图像保存为PNG等,我发现了一个有用的脚本: http://www.nihilogic.dk/labs/canvas2image/

答案 3 :(得分:1)

毕竟我决定使用代码 php

  

GD和图像功能

http://php.net/manual/en/ref.image.php

有了这个, 我已经在图像的特定位置创建了特定的html元素。

感谢所有人的贡献。