環境
系統: Mac 工具: Alfred, git, homebrew, pngpaste. 語言: perl 其他: Gitee
工具下載
https://gitee.com/serpmelon/inazuma
思路
使用Gitee倉庫作爲圖牀, 使用Alfred工作流簡化上傳圖片流程, 並將上傳圖片地址轉換爲markdown格式輸出到剪切板中.
使用
複製一張圖片, 然後使用快捷鍵CMD + shift + u或者喚出Alfred命令行輸入pp. 上傳成功後會發送通知提示上傳成功.
實現
創建Gitee圖牀環境
註冊賬號, 創建倉庫, 注意修改爲公共倉庫, 把倉庫拉到本地, 以後會將目標圖片複製到倉庫中. 其他沒什麼說的.
複製剪切板中的圖片到指定路徑
遇到的第一個難題, 如何將剪切板中的圖片複製到指定目錄下呢(git目錄)? pbcopy和pbpaste命令只能操作文本, 所以第一個想法, 複製圖片的路徑, 這樣就可以通過操作文本進行賦值操作.
對圖片使用cmd+option+c會複製其路徑, 然後通過執行cp命令將文件複製到指定目錄中.
system("cp $source $target");
但是, 這樣很不方便, 而且通常情況下都是截一個圖片沾到自己的文章中, 如果只能通過路徑複製, 那麼每次截圖還需要下載到本地. 所以需要實現將剪切板中的圖片文件複製到目錄的功能.
使用pngpaste工具實現上述功能, 使用homebrew下載
brew install pngpaste
使用簡單
pngpaste hooray.png # 目標文件
參考 https://github.com/jcsalterego/pngpaste
本地運行正常, 但是在Alfred中運行異常, 排查發現是找不到pngpaste命令. Alfred運行腳本不會使用用戶的運行環境, 所以找不到第三方命令, 解決辦法就是我們幫它找到命令, 使用全路徑就可以拉, 路徑配置到Alfred變量中.
system("$PASTE_DIC/pngpaste $target");
git命令提交圖片
圖片已經複製到git本地倉庫了, 然後只需要push上去就好了.
system("cd $GIT_DIC; git add .;git commit -m 'pic';git push");
拼接圖片地址
瀏覽下Gitee上圖片的地址, 類似這樣 https://gitee.com/serpmelon/pictures/blob/master/20230102/1672643597serpmelon15714.png 將blob換成raw就可以訪問了, 修改後: https://gitee.com/serpmelon/pictures/raw/master/20230102/1672643597serpmelon15714.png
然後按照markdown格式拼接地址後:
![](https://gitee.com/serpmelon/pictures/raw/master/20230102/1672643597serpmelon15714.png)
問題
- 圖片過大問題, 實際使用過程中發現圖片已經上傳但是就是無法顯示, 最後發現是圖片過大, 無法展示, 這個應該是Gitee的限制, 比如下面這個鏈接對應的圖片3.6M就無法顯示.
![](https://gitee.com/serpmelon/pictures/raw/master/20230102/1672646592serpmelon10602.png)
所以爲了能正常顯示需要對圖片進行一個壓縮處理, 目前調研了部分工具可以實現圖片的壓縮, 但是本來就是一個簡單的圖牀工具還需要用戶自己下載各種工具? 所以壓縮功能打算自己後面實現一個.
- 同上面的問題, 使用本工具需要用戶自己下載pngpaste, 這個也打算自己實現下.