開源精選 | 輕鬆搞定嵌入、提取圖片盲水印的Python庫

《開源精選》是我們分享Github、Gitee等開源社群中優質專案的欄目,包括技術、學習、實用與各種有趣的內容。本期推薦的是一個給圖片嵌入盲水印的Python庫——blind_watermark。

盲水印就是圖片有水印但人眼看不出來,需要透過程式才能提取水印,相當於隱形“蓋章”,可以用在資料洩露溯源、版權保護等場景。blind_watermark目前支援嵌入圖片、字串和二進位制三種方式。

開源精選 | 輕鬆搞定嵌入、提取圖片盲水印的Python庫

安裝:

使用pip install安裝:

pip install blind-watermark

或者安裝最新開發版本:

git clone git@github。com:guofei9987/blind_watermark。gitcd blind_watermarkpip install

使用示例:

嵌入圖片水印

from blind_watermark import WaterMarkbwm1 = WaterMark(password_wm=1, password_img=1)# 讀取原圖bwm1。read_img(‘pic/ori_img。jpg’)# 讀取水印bwm1。read_wm(‘pic/watermark。png’)# 打上盲水印bwm1。embed(‘output/打上水印的圖。png’)

提取圖片水印

bwm1 = WaterMark(password_wm=1, password_img=1)# 注意需要設定水印的長寬wm_shapebwm1。extract(filename=‘output/打上水印的圖。png’, wm_shape=(128, 128), out_wm_name=‘output/解出的水印。png’, )

嵌入字串

from blind_watermark import WaterMarkbwm1 = WaterMark(password_img=1, password_wm=1)bwm1。read_img(‘pic/ori_img。jpg’)wm = ‘@guofei9987 開源萬歲!’bwm1。read_wm(wm, mode=‘str’)bwm1。embed(‘output/embedded。png’)len_wm = len(bwm1。wm_bit)print(‘Put down the length of wm_bit {len_wm}’。format(len_wm=len_wm))

提取

bwm1 = WaterMark(password_img=1, password_wm=1)wm_extract = bwm1。extract(‘output/embedded。png’, wm_shape=len_wm, mode=‘str’)print(wm_extract)

效果展示:

原圖

開源精選 | 輕鬆搞定嵌入、提取圖片盲水印的Python庫

對嵌入盲水印後的圖做各種攻擊

開源精選 | 輕鬆搞定嵌入、提取圖片盲水印的Python庫

更多內容大家可自行前往閱讀。

開源地址:

github.com/guofei9987/blind_watermark