Soptq

Soptq

Probably a full-stack, mainly focusing on Distributed System / Consensus / Privacy-preserving Tech etc. Decentralization is a trend, privacy must be protected.
twitter
github
bilibili

圖片水印果然還是不適合我

可能有觀眾已經發現了(雖然我覺得這個博客沒有其他人關注),Soptlog 在上一個版本中所有文章中的圖片左下角都有一個水印。而在這個版本所有的水印又都被去除了。起初加水印的動機很簡單,一是為了測試一下 Ruby 調用 Nodejs 的能力,二是我發現有個博客在複製粘貼我的內容,還沒有申明來源,所以就想用水印的方式來「顯示主權」。現在看來還是不適合我。

實現方式#

考慮到以後可能有小夥伴想要實現相似的功能,我還是簡單簡述一下 Jekyll 實現編譯時生成水印圖片的方法。

首先原則就是,編譯後圖片變成什麼樣我不管,但你不能動我原本的圖片。 所以批量對原圖加水印就行不通了,只能在 Jekyll 生成站點的過程中處理圖片。所以關鍵 Hook 的方法就是 Jekyll::StaticFile 裡的 copy_file(dest_path) 方法,這個方法的主要功能是將靜態文件從原地址拷貝到站點地址 _site/。我們只需要在這個過程中攔截所有的圖片,然後用我們的方法去拷貝就行了。

考慮到 Ruby 的圖像處理基本靠 imageMagick,我又不是很想每次遠程 CI 都安裝個有些「重」的庫,所以圖片處理主要是在 Nodejs 裡用 Sharp 寫的。

Ruby 的調用主要是靠 SystemCall,所以其實是比較慢的,我之後想到了更好的方法再來補充。 SystemCall 太慢了,後來改成了 Socket 調用,瞬間速度快了 8 倍。

為什麼不適合我#

我是顏值控,加個水印實在是 太難看了。

變通的方法#

水印我還是想加的,但要「十分優雅地加」。我目前在考慮隱寫,有可能會實現一個自己的加密算法。日後有了進度再來補充。 現在的實現方式是在編譯過程中對圖片做隱寫。

載入中......
此文章數據所有權由區塊鏈加密技術和智能合約保障僅歸創作者所有。