環(huán)境
系統(tǒng): Mac
工具: Alfred, git, homebrew, pngpaste.
語言: perl
其他: Gitee
工具下載
https://gitee.com/serpmelon/inazuma
思路
使用Gitee倉庫作為圖床, 使用Alfred工作流簡化上傳圖片流程, 并將上傳圖片地址轉(zhuǎn)換為markdown格式輸出到剪切板中.
使用
復(fù)制一張圖片, 然后使用快捷鍵CMD + shift + u或者喚出Alfred命令行輸入pp.
上傳成功后會(huì)發(fā)送通知提示上傳成功.
依賴
使用pngpaste工具實(shí)現(xiàn)剪切板相關(guān)功能
brew install pngpaste
使用ImageMagick實(shí)現(xiàn)圖片壓縮
brew install imagemagick
實(shí)現(xiàn)
創(chuàng)建Gitee圖床環(huán)境
注冊(cè)賬號(hào), 創(chuàng)建倉庫, 注意修改為公共倉庫, 把倉庫拉到本地, 以后會(huì)將目標(biāo)圖片復(fù)制到倉庫中. 其他沒什么說的.
配置Alfred workflow
下載并將工具拖進(jìn)Alfred中, 由于依賴了第三方軟件, 在執(zhí)行腳本時(shí)需要指定工具目錄, 所以需要在workflow中配置對(duì)應(yīng)路徑如下:

GIT_DIR git倉庫本地路徑, 圖片會(huì)直接復(fù)制到這里.
GIT_DOMAIN git圖床路徑, 比如我配置的是 https://gitee.com/serpmelon/pictures/raw/master.
IMAGE_MAGICK_DIR ImageMagick工具安裝的路徑.
PASTE_DIR pngpaste工具安裝的路徑.
對(duì)于homebrew下載的工具可以通過如下命令查看
brew list pngpaste
返回: /usr/local/Cellar/pngpaste/0.2.3/bin/pngpaste
則配置路徑: /usr/local/Cellar/pngpaste/0.2.3/bin
brew list imagemagick
返回:
/usr/local/Cellar/imagemagick/7.1.0-16/bin/Magick++-config
/usr/local/Cellar/imagemagick/7.1.0-16/bin/MagickCore-config
/usr/local/Cellar/imagemagick/7.1.0-16/bin/MagickWand-config
/usr/local/Cellar/imagemagick/7.1.0-16/bin/animate
/usr/local/Cellar/imagemagick/7.1.0-16/bin/compare
/usr/local/Cellar/imagemagick/7.1.0-16/bin/composite
...
配置路徑: /usr/local/Cellar/imagemagick/7.1.0-16/bin
復(fù)制剪切板中的圖片到指定路徑
遇到的第一個(gè)難題, 如何將剪切板中的圖片復(fù)制到指定目錄下呢(git目錄)? pbcopy和pbpaste命令只能操作文本, 所以第一個(gè)想法, 復(fù)制圖片的路徑, 這樣就可以通過操作文本進(jìn)行賦值操作.
對(duì)圖片使用cmd+option+c會(huì)復(fù)制其路徑, 然后通過執(zhí)行cp命令將文件復(fù)制到指定目錄中.
system("cp $source $target");
但是, 這樣很不方便, 而且通常情況下都是截一個(gè)圖片沾到自己的文章中, 如果只能通過路徑復(fù)制, 那么每次截圖還需要下載到本地. 所以需要實(shí)現(xiàn)將剪切板中的圖片文件復(fù)制到目錄的功能.
使用pngpaste工具實(shí)現(xiàn)上述功能, 使用homebrew下載
brew install pngpaste
使用簡單
pngpaste hooray.png # 目標(biāo)文件
參考 https://github.com/jcsalterego/pngpaste
本地運(yùn)行正常, 但是在Alfred中運(yùn)行異常, 排查發(fā)現(xiàn)是找不到pngpaste命令. Alfred運(yùn)行腳本不會(huì)使用用戶的運(yùn)行環(huán)境, 所以找不到第三方命令, 解決辦法就是我們幫它找到命令, 使用全路徑就可以拉, 路徑配置到Alfred變量中.
system("$PASTE_DIC/pngpaste $target");
git命令提交圖片
圖片已經(jīng)復(fù)制到git本地倉庫了, 然后只需要push上去就好了.
由于在不同目錄執(zhí)行, 執(zhí)行會(huì)報(bào)提示"fatal: not a git repository", 使用類似如下命令即可
git --git-dir=/x/y/.git --work-tree=/x/y add .
圖片壓縮
Gitee限制圖片大小, 對(duì)于大于1MB的圖片會(huì)打不開.

所以對(duì)于大的圖片需要進(jìn)行壓縮處理, 這里依賴ImageMagick, 使用brew下載.
brew install imagemagick
拼接圖片地址
瀏覽下Gitee上圖片的地址, 類似這樣
https://gitee.com/serpmelon/pictures/blob/master/20230102/1672643597serpmelon15714.png
將blob換成raw就可以訪問了, 修改后:
https://gitee.com/serpmelon/pictures/raw/master/20230102/1672643597serpmelon15714.png
然后按照markdown格式拼接地址后:


問題
- 目前依賴了pngpaste和ImageMagick工具, 后面自己簡單實(shí)現(xiàn)下, 這樣用戶就不需要自己再單獨(dú)下載依賴了.