有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java截图并返回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解决方案吗

谢谢


共 (1) 个答案

  1. # 1 楼答案

    答案一直就在我面前,我正在渲染一个PNG,但试图返回一个PNG。我以JPEG格式渲染并返回,所有问题都解决了。谢谢