[英]Java : Determine if String is an URL(without www or http), take its screenshot
我正在开发一个Spring-MVC Web应用程序,我们正在其中尝试获取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;
}
你能帮忙的话,我会很高兴。 谢谢。
(b)系统是否太忙/在SSD上使用以查看速度是否更快?
(c)但是对于最终应用程序感到好奇,这是Web应用程序的一部分吗? 您的代码将如何在客户端系统上运行? 还是将Java代理安装在监视网页并进行屏幕截图的所有用户系统上? 然后,为什么要使用网页,使用Java应用程序聊天,并解析键入的文本。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.