1. 程式人生 > >在Markdown編輯中自動上傳圖片

在Markdown編輯中自動上傳圖片

這幾天學習一些技術,寫一些筆記或者相關的文件,一般喜歡用markdown,因為比較通用,而且寫完直接可以傳到csdn上。不管是用typora編輯,還是在csdn上寫,插入圖片始終是一個極其極其蛋疼的事情,而且csdn的相簿找不著了。後來折騰了半天,也看到了網上的一些解決辦法。後來綜合了一下各類方法以及自己的需求寫了一個java自動化程式。

發現的方法:

首先先說明一下為了方便該問題的解決看到的方法:
1.利用新浪微博上傳,免費!用Chrome有外掛操作。我試用之後,不知道為什麼傳不上去,可能是晚上宿舍網慢。所以放棄。
2.使用各公司開發好的圖床,有幾個G的免費使用,也有相關工具。沒有下載使用,有興趣的同學可以自行鼓搗。
3.GitHub,將圖片上傳到GitHub上,然後右擊獲取圖片地址。
4.iPic,上官網一看介紹,完全符合需求。可以自己選擇圖床,但是隻支援mac……

解決方案

接下來說一下我的辦法吧。我是使用GitHub當成自己的倉庫。首先先建一個資料夾,截圖之後儲存在裡面,程式隔幾秒遍歷一次資料夾,出現新的檔案後上傳GitHub。當然在此之前要在GitHub上新建一個repository專門存放圖片,上傳完畢之後,可發現,在同一repository的圖片路徑只有檔名是不一樣的,大致的結構是這樣的。

https://github.com/{使用者名稱}/{專案名}/{一些其他目錄結構}/{上傳時圖片檔名,經過urlencoude}?raw=true

你可以先傳幾個圖片看看地址構成,然後把檔名字串拼接上,就得到了圖片地址了,然後寫入到一個文件裡,複製那一段地址即可。當然會爬蟲的可以獲取更準確的資訊。

演示:

就好比在編寫這個文件時候,需要截圖。這個時候,先執行程式,然後直接用截圖軟體擷取。
這裡寫圖片描述

儲存。之後程式檢索到新檔案,開始上傳,並返回結果。
這裡寫圖片描述
開啟實現準備好的輸出圖片地址文件,
這裡寫圖片描述
完畢~

程式碼

原始碼可以參看我的GitHub。
這裡簡單講解一下。
14.15.48.63這幾行需要寫你自己的路徑地址,大概是這幾行。picTxt是輸出圖片路徑的結果存到哪裡。path放圖片的地方。48.46是拼接圖片地址。

    traverseFolder2(path);// 遍歷目標文件下的檔案。
    oldPath.addAll(newPath);
    // 兩個陣列,分別存遍歷前後的內容,然後找差別,這裡初始化,兩個一樣。
while (true) {
/*停3秒遍歷一次*/
            try {
                Thread.sleep(3000);
            } catch (InterruptedException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }
/*獲取路徑到newPath中*/
            getPath();
/*對比oldPath和newPath,將差異路徑存到diff中*/
            comparePaths(oldPath, newPath);

            if (diff.size() == 0) {
            //沒有差異。
                continue;
            } else {
            //發現儲存圖片
                System.out.println("準備上傳圖片");
            //upload.cmd 放的git的上傳命令。
                executive("cmd /c upload.cmd");

                System.out.println("上傳結果:");

                for (String ds : diff) {
                //獲取上傳檔名,urlEncode一下轉碼。
                    int index = ds.lastIndexOf("\\");
                    String uploadName = urlEncode(ds.substring(index + 1, ds.length()));
                //按照自己的路徑改  System.out.println("https://github.com/zz133110/MarkDownPic/blob/master/" + uploadName + "?raw=true");

                // 追加寫入text文字
                    File f = new File(picTxt);
                    if (!f.exists()) {
                        System.out.print("檔案不存在");
                        try {
                            f.createNewFile();
                        } catch (IOException e) {
                            // TODO Auto-generated catch block
                            e.printStackTrace();
                        } // 不存在則建立
                    }

                    try {
                        BufferedWriter output = new BufferedWriter(new FileWriter(f, true));
                        output.write("https://github.com/zz133110/MarkDownPic/blob/master/" + uploadName + "?raw=true");
                        output.write("\n");
                        output.flush();
                        output.close();
                    } catch (IOException e) {
                        // TODO Auto-generated catch block
                        e.printStackTrace();
                    } 
                }
                //同步old new,clear diff
                oldPath.addAll(diff);
                diff.clear();
            }

大佬的程式碼:
這裡寫圖片描述
我的程式碼:
這裡寫圖片描述