被保护的图片——隐形水印

6,505 阅读2分钟

一张看似普普通通的图片,可能会被收藏、可能会被用作头像,这是没有什么问题的。但是当被用于商业用途,那就要小心了,隐形水印,一种对图片看不见的保护。可能有人觉得匪夷所思,有人觉得害怕,但事实上这是好事,这不仅保护了图片,也保护了拥有人的隐私以及合法权利。

我知道的实现方式,是Python编程语言的一个库,并且是Github的一个开源项目,invisible-watermark,地址:github.com/ShieldMnt/i…,感兴趣的可以去看一下,下面是我使用的过程:

安装:

pip install invisible-watermark

选取原图如下:

使用脚本进行编码加水印,得到的结果就是与原图一样的图片,但是通过代码处理,加上了字符串水印,水印字符串‘test’。脚本如下:

#!/usr/bin/env python3

import cv2
from imwatermark import WatermarkEncoder

bgr = cv2.imread('dragon.png')
wm = 'test'

encoder = WatermarkEncoder()
encoder.set_watermark('bytes',wm.encode('utf-8'))
bgr_encoded = encoder.encode(bgr, 'dwtDct')

cv2.imwrite('dragon_wm.png',bgr_encoded)

脚本输出:

这张输出图片,便是被保护的图片,假想被直接用作其他商业用途,便可以通过解码这张图片得到水印test信息,当然其中可能出现其他攻击改变图片原始内容的方式手段,这些官方Git有测试,这里主要说被隐形水印所保护的图片,解码脚本内容如下:

#!/usr/bin/env python3

import cv2
from imwatermark import WatermarkDecoder

bgr = cv2.imread('dragon_wm.png')

decoder = WatermarkDecoder('bytes', 32)
watermark = decoder.decode(bgr, 'dwtDct')
print(watermark.decode('utf-8'))

得到的输出结果便是test。

测试结果显然。互联网不断发展,对数字数据的攻击和保护一直也随之发展,很显然,隐形水印,是一种对图片的不错保护方式。而Python的第三方模块invisible-watermark,也是一种很好的进行隐形水印的工具。