2012-01-31 69 views
12

我有一个场景,我正在创建动态html内容,我需要导出/保存html内容到一个图像文件与PHP,jQuery和JavaScript [或任何其他如果可能]。从html内容保存/导出图像文件?

+0

您好,欢迎计算器。你是说在图像文件中编写一些文本(在这种情况下是HTML页面的来源)?一般来说,可以使用PHP。 – 2012-01-31 07:21:15

+0

如果你的意思是呈现的HTML,这不是一个微不足道的任务......也许一些关于这个问题的更多信息会有所帮助?也许有更好的方法来达到你的最终目标。 – Corbin 2012-01-31 07:21:35

+0

你想将html内容保存为图像文件(jpg/png)吗?你能否清楚 – run 2012-01-31 07:24:50

回答

1

毕竟我已经决定使用的代码 PHP

GD and Image Functions

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

与此, 我有在图像的特定位置创建特定的html元素。

谢谢大家的贡献。

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。

基于 “迈克尔Witrant” 答案 看看: Compile/Save/Export HTML as a PNG Image using Jquery

+0

感谢您的回复! [不用于wid画布]我在测试文件中夹住这个脚本,为此我在顶部包含了js文件。 [以w3s为例] 。但它给错误 - “安全错误 'rgb(255,255,255)'”,你可以检讨吗? – 2012-01-31 10:33:27

+0

Uncaught TypeError:Object#没有方法'drawWindow' - chrome中的错误。 – 2012-01-31 10:45:04

+0

确保您使用的版本支持HTML5,作为一个建议,您可以尝试使用Firebug进行调试的Firefox 9,对不起,我没有时间为您测试它 – Sypress 2012-01-31 11:29:35