使用Python给文件添加防伪水印?

liftword2个月前 (05-14)技术文章19

防伪水印大家都不陌生,添加防伪水印的主要目的是保护文件的真实性和所有权,防止未经授权的复制、篡改和使用。下面我们就来看看通过Python如何实现为文件添加防伪水印的操作。

使用Python添加防伪水印到文件中,在不同的文件中需要用到不同的操作库,下面是两个比较常见的使用场景,为图片添加水印和为PDF文件添加水印。

图片文件添加水印操作

要实现图片添加水印操作,我们可以使用Pillow库来处理图像并添加水印,如下所示。第一步、我们先要安装Pillow库。

pip install pillow

接下来就是通过编码来实现往图片中添加水印的操作,如下所示。

from PIL import Image, ImageDraw, ImageFont

def add_watermark(input_image_path, output_image_path, watermark_text):
    # 打开原始图像
    original_image = Image.open(input_image_path)
    width, height = original_image.size

    # 创建水印图像
    watermark_image = Image.new('RGBA', original_image.size)
    draw = ImageDraw.Draw(watermark_image)

    # 使用一个字体文件
    font = ImageFont.truetype("arial.ttf", 36)
    
    # 计算水印位置
    text_width, text_height = draw.textsize(watermark_text, font)
    x = width - text_width - 10
    y = height - text_height - 10

    # 添加水印
    draw.text((x, y), watermark_text, font=font, fill=(255, 255, 255, 128))  # 半透明白色

    # 合并原始图像和水印
    watermarked_image = Image.alpha_composite(original_image.convert('RGBA'), watermark_image)

    # 保存结果
    watermarked_image.show()  # 显示添加水印的图像
    watermarked_image.save(output_image_path, 'PNG')

# 示例使用
add_watermark('input_image.png', 'output_image.png', 'Sample Watermark')

通过上面的步骤,我们就可以在图片中添加上一个防伪的水印,当然在实际开发中,我们还可以对水印根据自己的实际需求来进行调整。

向PDF文件添加水印

往PDF中添加水印操作,一般我们可以通过PyPDF2和reportlab库来处理,还是一样,在使用前需要安装相应的依赖库,如下所示。

pip install pypdf2 reportlab

接下来就是通过这两库来实现往PDF中添加水印的操作。

from PyPDF2 import PdfReader, PdfWriter
from reportlab.pdfgen import canvas
from reportlab.lib.pagesizes import letter

def create_watermark(watermark_text, watermark_pdf_path):
    c = canvas.Canvas(watermark_pdf_path, pagesize=letter)
    c.setFont("Helvetica", 50)
    c.setFillColorRGB(255, 0, 0, alpha=0.3)  # 半透明红色
    c.saveState()
    c.translate(300, 500)
    c.rotate(45)
    c.drawCentredString(0, 0, watermark_text)
    c.restoreState()
    c.save()

def add_watermark(input_pdf_path, output_pdf_path, watermark_text):
    # 创建水印PDF
    watermark_pdf_path = 'watermark.pdf'
    create_watermark(watermark_text, watermark_pdf_path)

    # 读取源PDF和水印PDF
    reader = PdfReader(input_pdf_path)
    watermark = PdfReader(watermark_pdf_path)
    writer = PdfWriter()

    # 遍历所有页面添加水印
    for i in range(len(reader.pages)):
        page = reader.pages[i]
        page.merge_page(watermark.pages[0])
        writer.add_page(page)

    # 保存结果
    with open(output_pdf_path, 'wb') as output_pdf_file:
        writer.write(output_pdf_file)

# 示例使用
add_watermark('input.pdf', 'output.pdf', 'Confidential')

上面的两个例子中,分别展示了通过Python往图片中和PDF中添加水印的操作,在实际使用场景中,我们可以对水印的位置,字体颜色、字体大小等进行调整,来实现更为复杂的防伪水印效果。

相关文章

用 Python 去除 PDF 水印,你学会吗?

今天介绍下用 Python 去除 PDF (图片)的水印。思路很简单,代码也很简洁。首先来考虑 Python 如何去除图片的水印,然后再将思路复用到 PDF 上面。这张图片是前几天整理《数据结构和算法...

python如何给图片添加文字水印?

方法:方法简单粗暴,打开图片然后在合适的位置绘制文字,最后保存。python可以使用PIL库来操作图片,不过据说PIL不支持python3,使用pillow作为替代。安装pillow: pip ins...

老AI开源项目案例:去除指定位置、形态的水印

各家企业的业务线不同,需求也多种多样,像去水印这种需求也存在。需求一个妹子是做Java的,她尝试过用Java代码去除图片上的水印,但是效果并不好。行业的直觉告诉她,可能AI人工智能更适合去除水印。我直...

仅一行Python代码,为您的图片加上水印(5)

小朋友们好,大朋友们好!我是猫妹!之前我们聊过怎么给pdf格式加水印,今天咱们聊聊怎么给图片加水印。加水印,肯定有很多现成的软件工具。常用的图片软件都有添加水印或者马赛克等功能。既然咱们是学习Pyth...

用DeepSeek开发PDF神器!一键去水印及A3转A4,附完整代码

经常遇到老师发的一些需要打印的PDF,用扫描王扫的PDF,右下角有水印,有的是A3格式,直接打印成A4的话,字又太小了,需要将左右或上下分割成A4来打印,最近DeepSeek比较火,于是用它来开发PD...