背景
最近在開發一個小程序,其中有一個幫助模塊,內容為幫助文章列表,文章內容為網站后台編輯的富文本格式。鑒於小程序的特殊性,其對html格式的富文本支持並不友好。
剛開始有人開發了wxparse插件,后來微信提供了rich-text組件,但是這兩者存在一些問題。
思路
后台編輯的文章樣式經過wxparse或者richtext組件顯示后,都存在一些兼容性問題。如果我們將文章內容做成圖片,然后用image來下顯示應該可以達到比較理想的效果。
但是沒一篇文章都找美工區設計一張圖片費時費力,修改還費勁。
如果我們后台編輯的文章能自動生成一個圖片就完美了。
方案
查詢后發現國外網站thumb.io提供了類似的服務,可以利用API接口將指定地址保存為圖片。但是經過測試發現圖片並不清晰,而且訪問速度非常慢。然后我就自己安裝了phantomjs並進行了測試,效果比較理想。
用phantomjs保存的百度首頁截圖
為了實現自動化,我還做成了web api。通過將對應文章的網址發送到指定的api就可以自動生成截圖(異步方式)。具體方法就是有截圖請求的時候,將請求保存到數據庫,然后服務器上跑一個程序挨個執行截圖操作,截圖后修改對應請求的狀態。
----------------------------------------------------
API接口({}中的內容為參數值)
使用方法:將需要截圖的網址傳遞到通過生成截圖請求接口,一段時間(建議10秒)后再通過查詢接口查詢,如果返回的code=0,status=1的時候,直接將thumb保存到本地即可。
生成截圖請求:http://thumb.loxn.cn/?url={URL}
說明:URL參數必須進行urlencode,否則可能出錯
實例:http://thumb.loxn.cn/?url=http%3a%2f%2fwww.cnblogs.com%2fdragondean%2f
返回:JSON格式
code 0 成功,1 網址格式錯誤, 2 網址已存在
msg 錯誤信息(僅code不為0是存在)
task_id 任務ID,查詢狀態時需要用到(code為0或者2時)
key 查詢秘鑰,查詢狀態時需要用到(code為0或者2時)
status 任務狀態,如果任務已存在則會返回此狀態,-1表示失敗,0表示處理中,1表示已完成
thumb 截圖地址,可直接將此圖片下載到本地 (code為2且status為1時)
err_msg 錯誤信息,僅status=-1時存在
查詢任務狀態:http://thumb.loxn.cn/?a=query&task_id={TASK_ID}&key={KEY}
說明:task_id和key都是生成請求時返回,必填
實例:http://thumb.loxn.cn/?a=query&task_id=1&key=eb8578633e5cb22377ee85641204494f
返回:JSON
code 返回狀態,0成功,3 任務不存在,4 查詢秘鑰錯誤
status code為0時,status=-1表示失敗,status=0表示處理中,status=1表示已完成
thumb code位0且status為1時,截圖地址,可直接將此圖片下載到本地
err_msg 錯誤信息,僅status=-1時存在
----------------------------------------------------
接口暫時為測試狀態,隨時可能發生變化或者變更,屆時將在此文章更新,請及時關注。也可以加入QQ群563752274獲得最新的進展。