本期推荐的是一个给图片嵌入盲水印的Python库——blind_watermark。
盲水印就是图片有水印但人眼看不出来,需要通过程序才能提取水印,相当于隐形“盖章”,可以用在数据泄露溯源、版权保护等场景。blind_watermark目前支持嵌入图片、字符串和二进制三种方式。
安装:
使用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)
效果展示:
原图
对嵌入盲水印后的图做各种攻击
更多内容大家可自行前往阅读。