截取屏幕截图并在 servlet 中返回



我正在尝试截取网页的屏幕截图并从如下所示的servlet返回它:

<img src="http://localhost:8080/image">

这在大多数情况下有效。 我正在使用 phantomjs,从桌面打开时生成的 png 看起来很好。 当它使用 img 标签显示时,它看起来但有粉红色调?

我正在使用以下代码

public void doGet(HttpServletRequest request, HttpServletResponse response) throws IOException {
    String phantomjsHome = "C:\phantomjs-1.9.8-windows\";
    String phantomjsRasterizeScript = phantomjsHome + "examples\rasterize.js";
    String url = "http://localhost/";
    String file = "C:\index.png";
ProcessBuilder pb = new ProcessBuilder(phantomjsHome + "phantomjs", phantomjsRasterizeScript, url, file);
ProcessBuilder.Redirect error = pb.redirectError();
ProcessBuilder.Redirect out = pb.redirectOutput();
ProcessBuilder.Redirect in = pb.redirectInput();
Process process = pb.start();
try {
    process.waitFor();
} catch (InterruptedException e) {
    // TODO Auto-generated catch block
    e.printStackTrace();
}
response.setContentType("image/jpeg");
String pathToWeb = getServletContext().getRealPath(File.separator);
File f = new File("C:\index.png");
BufferedImage bi = ImageIO.read(f);
OutputStream out1 = response.getOutputStream();
ImageIO.write(bi, "jpg", out1);
out1.close();

}

我错过了什么导致粉红色调的原因吗? 另外,有谁知道如何让 phantomjs 只截取div 的屏幕截图或拥有非 phantomjs 解决方案?

谢谢!

答案

一直摆在我面前,我正在渲染PNG,但试图返回PNG。 我渲染为 JPEG 并按原样返回,一切都解决了。 谢谢!

最新更新