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

liftword11小时前技术文章3

防伪水印大家都不陌生,添加防伪水印的主要目的是保护文件的真实性和所有权,防止未经授权的复制、篡改和使用。下面我们就来看看通过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视频去水印方法总结

去除视频水印是一个复杂的过程,通常需要结合图像处理和计算机视觉技术。以下是几种常见方法及对应的Python实现思路,但请注意:去除他人版权水印可能涉及法律风险,请确保你有权处理目标视频。方法一:覆盖/...

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

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

超简单!为图片和 PDF 上去掉水印

作者:某某白米饭来源:Python 技术网上下载的 pdf 学习资料有一些会带有水印,非常影响阅读。比如下面的图片就是在 pdf 文件上截取出来的。安装模块PIL:Python Imaging Lib...

AI壁纸创作革命:用DeepSeek+Python全自动去除图片水印

——附可商用级代码与多方案效果对比一、痛点觉醒:被水印支配的AI创作者作为日均产出300+AI壁纸的创作者,豆包生成的固定位置水印(右下角半透明Logo+文字)导致:单日浪费2.7小时手动PS修补不同...

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

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