我正在开发Spring-MVC webapplication,我们正在尝试获取URL的屏幕截图。目前我正在使用PhantomJS执行该任务,但速度太慢(> 10秒)。此外,URL必须与http / https和www一起用于检测它是否为URL。由于这是一个聊天应用程序,因此用户可以添加简单的URL,如helloworld.com
。你能帮忙的话,我会很高兴。谢谢。
代码:
String[] words = message.split(" ");
for( String item : words ){
boolean val = ResourceUtils.isUrl(item);
if(val){
urlIdentifier = calcUrl(item);
break;
}else {
System.out.println("Url false is "+item);
}
}
if(urlIdentifier!=null){
replies.setPreviewIdentifier(urlIdentifier);
input.put("preview_identifier",urlIdentifier);
}
计算屏幕截图的方法:
private String calcUrl(String website){
try {
String identifier = String.valueOf(new BigInteger(130, random).toString(32));
String previewLocation = msg + "chatthumbs/" + identifier ;
Process proc = Runtime.getRuntime().exec("phantomjs --ssl-protocol=any " +
"/home/deploy/phantom/rasterizepdf.js " +" "+website+" " +previewLocation);
proc.waitFor();
BufferedImage image = ImageIO.read(new File("/home/akshay/testme.png"));
if(image!=null){
if (image.getWidth() > image.getHeight()) {
image = Scalr.resize(image, Scalr.Mode.FIT_TO_HEIGHT, 250, 250);
} else {
image = Scalr.resize(image, Scalr.Mode.FIT_TO_WIDTH, 250, 250);
}
image = Scalr.crop(image, 250, 250);
ImageIO.write(image, "png", new File(previewLocation));
}
return identifier;
}catch (Exception e){
e.printStackTrace();
}
return null;
}
任何帮助都会很好。谢谢。
答案 0 :(得分:0)
(b)系统是否太忙/在SSD上使用以查看是否更快?
(c)但对最终应用程序感到好奇,这是Web应用程序的一部分吗?您的代码将如何在客户端系统上运行?或者,您是否会在监视网页并拍摄屏幕截图的所有用户系统上安装java代理?那么为什么要使用网页,使用java应用程序聊天,并将文本解析为键入。