数字水印是一种信息隐藏技术,通过在原始数据(如图像、音频、视频等)中嵌入人类无法察觉的信息来保护其版权、真实性和完整性等,从而提高数字内容的安全性和可信度。该代码使用了Pillow图像处理库,将图像转化为数组并操作像素值,将待嵌入或提取的信息位隐藏在图像中。同时,该代码还使用了numpy数组操作模块、time模块、functools函数操作模块和sys系统操作模块等技术实现数字水印的嵌入和提取,并进行了用户身份检查和图像格式检查等处理。
第一步:导入库。(注意:如果没有安装Pillow库,需要先安装Pillow库。)
import time
import functools
import numpy as np
from PIL import Image
import sys
后续代码如下:
def extract_info(picname):try:im = np.array(Image.open(picname))except:print("Cannot obtain image, please check file name")time.sleep(2)sys.exit()rows, columns, colors = im.shapetext = ""extract = np.array([], dtype=int)count = 0for row in range(rows):for col in range(columns):for color in range(colors):extract = np.append(extract, im[row][col][color] % 2)count += 1if count % 16 == 0:bcode = functools.reduce(lambda x, y: str(x) + str(y), extract)cur_char = chr(int(bcode, 2))text += cur_charif cur_char == '#' and text[-3:] == '#%#':return text[:-3]extract = np.array([], dtype=int)picname = "./zz.png"
text = extract_info(picname)
print("Extracted Information:", text)
print("The digital watermark is extracted successfully!")
在picname处输入需要读取水印的图片路径。
读取成功。