簡體   English   中英

Java:確定String是否為URL(沒有www或http),獲取其屏幕截圖

[英]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;
    }

你能幫忙的話,我會很高興。 謝謝。

  1. (a)我認為進行屏幕截圖的過程很耗時間。 此代碼是否與聊天屏幕在同一設備上運行? 為什么不使用java.awt.Robot進行屏幕截圖? 還是只保存文本,為什么需要截屏?

(b)系統是否太忙/在SSD上使用以查看速度是否更快?

(c)但是對於最終應用程序感到好奇,這是Web應用程序的一部分嗎? 您的代碼將如何在客戶端系統上運行? 還是將Java代理安裝在監視網頁並進行屏幕截圖的所有用戶系統上? 然后,為什么要使用網頁,使用Java應用程序聊天,並解析鍵入的文本。

  1. 解析文本。 如果用戶鍵入/粘貼長消息怎么辦? 您是解析一次還是更改所有內容? 如果這似乎是一個問題,請想辦法改善它。 現在,如果不是眼前的問題,請忽略。 另外,如果味精太長,則解析可能會花費大量時間。 也許在每次按鍵或更改事件(如果粘貼)之后進行處理,保留先前文本的本地js副本以獲取差異?

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM