Google的"报告错误"或"反馈工具"可让您选择浏览器窗口的某个区域,以创建提交的屏幕截图,其中包含有关错误的反馈.
Jason Small截图,发布在一个重复的问题.
他们是怎么做到的?谷歌的JavaScript反馈API从此处加载,他们对反馈模块的概述将演示屏幕截图功能.
我正在研究需要渲染页面并在客户端(浏览器)端制作屏幕截图的Web应用程序.
我不需要将屏幕截图保存在本地硬盘上,只需将其保存在RAM中并稍后将其发送到应用程序服务器即可.
我研究过:
但这些都没有给我我所需要的一切,这是:
最后我找到了谷歌的反馈工具(点击YouTube页脚上的"反馈"来查看此内容).它包含用于JPG编码的JavaScript和另外两个巨大的脚本,我无法确定它们到底做了什么......
但它是在客户端进行处理的 - 否则将这个巨大的JPEG编码器放入代码中就没有意义了!
任何人都知道他们是如何制作的/我如何制作它?
以下是反馈示例(在某些屏幕上报告错误)

是否可以使用JavaScript获取网页的屏幕截图,然后将其提交回服务器?
我不太关心浏览器安全问题.因为实施将是HTA.但这可能吗?
我有一个字符串变量,它包含HTML标记.此HTML标记基本上代表电子邮件内容.
现在我想从这个实际包含HTML标记的字符串内容创建一个图像.我不想通过将这些内容写入其中来创建HTML文件.我只想用这个字符串创建一个图像文件.
这就是我所拥有的:
string emailBody="<html><head></head><body><p>This is my text<p>...</body</html>"
Run Code Online (Sandbox Code Playgroud)
如何从此emailBody字符串内容创建图像?
我想知道在浏览器中加载的Base64 DataURL图像的最大长度是多少?
谢谢!
这是一个变量html_str,它是一个包含 html 标签和正文内容的字符串。我在 python 中使用以下代码从这个字符串创建了一个.html文件。
html_file = open("filename.html", "w")
html_file.write(html_str)
html_file.close()
Run Code Online (Sandbox Code Playgroud)
现在我得到了一个名为“ filename.html ”的html 文件。现在我想将该“filename.html”转换为一个名为 filename.jpg的图像,其中包含 html 文件的确切内容。请帮我。
长话短说:
更长的版本:
在 NodeJS 服务器中,我们需要根据请求参数将 HTML 字符串转换为 PDF 或 PNG。我们正在使用 puppeteer 生成部署在谷歌云功能中的 PDF 和 PNG(屏幕截图)。在我本地的 Docker 中运行此应用程序并将内存使用量限制为 100MB,这似乎有效。但是在云函数中,当我们将云函数设置为250MB内存时,它会抛出内存限制异常。作为临时解决方案,我们将云功能升级到 1 GB。
我们希望在没有任何无头浏览器方法的情况下尝试 puppeteer 的任何替代方案。另一个库 PDF-Kit 看起来不错,但它有 canvas api 类型的输入。我们不能直接提供 html。
对此有任何想法或意见
有谁知道如何做到这一点?我曾尝试使用JEditorPane,但它不起作用?还有其他想法吗?
提前致谢.
这是我正在使用的代码:
import java.awt.Dimension;
import java.awt.Graphics2D;
import java.awt.image.BufferedImage;
import java.io.File;
import javax.imageio.ImageIO;
import javax.swing.JEditorPane;
import javax.swing.JFrame;
import javax.swing.SwingUtilities;
public class HtmlToImage
{
protected static File generateOutput() throws Exception
{
// Create a temporary output file for the PNG image.
File outputFile = new File("Reporte.png");
outputFile.deleteOnExit();
JEditorPane pane = new JEditorPane();
pane.setContentType("text/html");
pane.setPage("http://www.google.com");
final JFrame frame = new JFrame();
frame.pack();
// Time Delay for the correct loading of the file.
try
{
Thread.sleep(5000);
}
catch(NumberFormatException nfe)
{
}
frame.add(pane);
frame.pack(); …Run Code Online (Sandbox Code Playgroud) 有没有更好的方法将呈现的HTML元素转换为可缩放且不像素化的PNG图像?
设计目标是在HTML + CSS中呈现页面(简单,允许用户将文本复制/粘贴为数据表等),但是将小部件复制/保存为图像以复制到PowerPoint等.出于其他原因,它是在RIA中做客户端非常有帮助.
这没关系,使用html2canvas将元素渲染到画布,将其转换为PNG,然后在对话框中显示它,用户可以右键单击以保存或复制到剪贴板(JSFiddle at http://jsfiddle.net/8ypxW/3/):
html2canvas($("#widget"), {
onrendered: function(canvas) {
document.body.appendChild(canvas);
// Convert and download as image
Canvas2Image.saveAsPNG(canvas);
$("#img-out").append(canvas);
}
});
Run Code Online (Sandbox Code Playgroud)
唯一的挑战是图像明显模糊/像素化,特别是在Mac Retina上,并且不提供像PNG图像那样的可扩展文本.
我怀疑画布周围没有好办法,画布是基于像素的,但之前是错误的.jQuery或其他库没关系.现代浏览器也没关系.即使只是获得更好的像素分辨率也很有用
通过SVG渲染是一种绕道,但如果可以做客户端,也可以选择.此链接表明它需要服务器端:http://bl.ocks.org/mbostock/6466603
我现在需要发送股票市场数据和格式很糟糕.需要发送一些类似的东西
| Symbol | Price | Change |
|--------|-------|--------|
| ABC | 20.85 | 1.626 |
| DEF | 78.95 | 0.099 |
| GHI | 23.45 | 0.192 |
| JKL | 98.85 | 0.292 |
Run Code Online (Sandbox Code Playgroud)
这就是我尝试过的.
| 符号| 价格| 改变|
| -------- | ------- | -------- |
| ABC | 20.85 | 1.626 |
| DEF | 78.95 | 0.099 |
| GHI | 23.45 | 0.192 |
JKL | 98.85 | 0.292 |