馬上1w訪問量了,我也咕了半年沒發博客了。其實不是我咕了,而是我實在苦於CSDN的博客發佈。
當我還是青澀的大一小鮮肉的時候,我曾嘗試用CSDN的富文本編輯器寫博客。富文本是由微軟開發的跨平臺文檔格式,word也是它家的,所以只要是會用word的人都會用富文本。
但是這讓我非常不舒服,因爲寫文章需要在瀏覽器中寫,這就存在兩個主要問題:1. 可能因爲網絡問題沒用及時保存文件;2. 明明是我的文章,我卻不能在本地瀏覽。於是我開始在本地寫博客。
在電腦上寫文章,第一個提到的肯定是家喻戶曉的word。word在熟悉了頁面和圖片的佈局後,還是可以非常高效的碼字的,問題是如何將word內的內容原封不動的發佈到CSDN?首先想到的是直接複製,**現在直接複製可以上傳圖片了!**而我在半年前試過是不行的,它頂多只能拖動本地的圖片上傳。即使現在方便了,但是它不會保存圖片的佈局(如居中)和縮進,還是需要手動調節。(我當時甚至嘗試過輸出pdf避免排版,但是會非常的耗流量。)
既然CSDN有markdown編輯器,我也開始學習用markdown來寫博客了。相信很多人會和我剛開始學md語言一樣,覺得用代碼表達樣式比較麻煩、低效,需要記很多東西。事實上,這只是熟練的問題。這裏推薦一下Typora,它可以在菜單找到特定的樣式,當你不記得樣式對應的代碼時可以直接通過菜單生成,用多了就不知不覺會了。
但是我發現,用Typora寫的markdown博客還是不能直接發佈到CSDN。Typora中的圖片存的是本地的路徑,其在顯示圖片時直接根據路徑讀取圖片文件進行渲染,因此你直接複製到CSDN的是一個你的本地路徑,瀏覽器也不會根據這個本地路徑去讀取你本地文件。
我上網查了一下本地博客直接上傳到CSDN的方法,大致只有這兩種方法:1. 將本地的圖片自動上傳到圖站,讓CSDN直接根據圖片的鏈接獲取;2. 使用Base64對圖片進行編碼。第一個方法相對簡單,但是可能會存在需要付費和圖片被圖站刪除的問題,其中圖片丟失是最難受的,很多博客都有這問題,讓讀者讀起來非常不舒服。第二個方法吸引了我,我嘗試在線將圖片轉爲Base64編碼,把結果複製到CSDN的markdown編輯器上,圖片居然真的顯示了!
於是,我只需要寫一個程序,將md文件中的圖片找出來,轉爲Base64編碼就可以了。但是後面我發現,雖然CSDN和Typora都是markdown編輯器,但是它們還是有一定的區別。
Typora轉CSDN
1. 圖片轉換
Typora用以下兩種方式表示圖片:
![image](C:\Users\xxx.png)
<img src="C:\Users\xxx.png" alt="xxx" style="zoom: 67%;" />
第二種格式在修改圖片的尺寸時會出現
而CSDN用Base64編碼後的圖像是下面的格式:
<img src="data:image/png;base64,圖片Base64碼" />
圖片轉換只需要從圖片路徑讀取圖片,然後進行改尺寸、加水印等操作,轉爲Base64編碼,最後套上上面的格式就可以了。
水印參考:java實現給圖片添加水印
2. 居中佈局
Typora中的圖片是默認居中的,而CSDN默認是左對齊的。顯然居中會讓人讀起來更舒服。
由於CSDN的markdown是基於html的,可以用html的段落進行居中:
<p align=center>
<img >
</p>
3. 縮進轉換
Typora、word都可以用Tab鍵進行縮進,其對應的字符是’\t’。但是CSDN中不能用這個進行縮進,需要用的是" "代替’\t’。這應該是網頁的規定,總之進行替換就能實現這個功能。
參考:CSDN-markdown 首行縮進的快捷實現: 全角空格配合
4. 鏈接轉換(未實現)
Typora中的鏈接會自動識別,而CSDN中必須用[https://www.baidu.com/](https://www.baidu.com/)
表示才能用藍色下劃線樣式展示,並按住Ctrl+點擊可以直接打開鏈接。
5. 頁內跳轉(未實現)
程序誕生的一刻就廢棄了
當我花了兩天時間寫代碼一天時間做UI後,這個簡陋的程序終於是完成了
效果還是不錯的,用Typora打開的效果跟源文件是一樣的,複製到CSDN後格式也完全一樣,再也不用手動將每個圖片居中了!
但是我發現無論是直接複製還是使用CSDN的導入鍵,當圖片一多,文章就不完整了。我才知道,CSDN居然限制了發佈的文本的大小。😥
總結
現在CSDN支持word直接複製了,當圖片較多的時候,還是用富文本編輯器比較方便。如果沒啥圖片,習慣了md,又不想排版,可以試試我這個然並卵的程序😭。
說到底,還是markdown比較合適程序員寫博客,word不能設置代碼塊。希望CSDN能支持md文件一鍵導入吧。
下載地址:MD2CSDN.jar