利用python实现添加水印和去水印的小代码

目录

前言:

解析:

remove_pdf() 函数:

pic2pdf() 函数:

clear_file() 函数:

add_watermark(content) 函数:

主程序部分:

引用的库:

逐段分析:(包含我自己做的时候遇到的各种问题)

去水印环节:

添加水印环节:

主循环部分:

源码:

写在最后: 


前言:

题主大一,为了完成信息技术作业,而在网上到处研究学习,完成了一个python代码,能实现去水印和加水印,但是功能非常局限,只能去除最普通的水印,和加普通水印,这是受到库的限制,还有我学术不精,特下此篇文章给大伙做一下参考。效果如下

解析:

以下都是我自己定义的函数,源代码在最后面需要自取,但是注意时间,编写时间2024/3/29,python3.7,库是最新的

  1. remove_pdf() 函数:

    • 这个函数的目的是去除PDF文件中的水印。

    • 它首先通过 fitz.open() 打开PDF文件。

    • 然后遍历PDF的每一页,使用 get_pixmap() 方法获取页面的像素图。

    • 接着,它会遍历像素图中的每一个像素点,并检查该点的RGB值之和是否大于等于576(这里假设水印的颜色较深,RGB值之和较大)。

    • 如果是,它会将该像素点的颜色设置为白色,即 (pixmap.set_pixel(pos[0], pos[1], (255, 255, 255))

    • 最后,它会将修改后的像素图保存为PNG图片,并打印出相应的完成信息。

  2. pic2pdf() 函数:

    • 这个函数用于将一系列图片文件转换成一个PDF文件。

    • 它首先通过 os.listdir() 获取指定目录下的所有图片文件,并按照文件名前的数字排序。

    • 然后,它会遍历这些图片文件,使用 fitz.open() 打开每一个图片文件,并使用 convert_to_pdf() 方法将图片转换成PDF格式。

    • 接着,它会创建一个新的PDF文件,并将转换后的PDF文件插入到这个新PDF中。

    • 最后,它会保存并关闭这个新PDF文件。

  3. clear_file() 函数:

    • 这个函数用于删除指定文件夹下的所有文件。

    • 它首先检查指定的文件夹是否存在。

    • 如果存在,它会获取该文件夹下的所有文件和子文件夹,并遍历它们。

    • 对于每一个文件,它会使用 os.remove() 方法将其删除,并打印出相应的完成信息。

  4. add_watermark(content) 函数:

    • 这个函数用于给PDF文件添加水印。

    • 它首先通过 fitz.open() 打开PDF文件,并遍历每一页。

    • 对于每一页,它会将页面的像素图保存为PNG图片。

    • 然后,它会调用 add_mark() 函数,将水印添加到这些PNG图片上,并将添加水印后的图片保存回中转文件夹。

    • 注意,add_mark() 函数的具体实现没有在这段代码中给出。

  5. 主程序部分:

    • 程序首先提示用户选择一个功能来运行(加水印、去水印或退出)。
    • 然后,它会让用户选择一个中转文件夹,用于存放临时文件。
    • 接着,它会让用户选择一个PDF文件,用于进行水印操作。
    • 最后,它会让用户选择一个输出文件夹,用于存放最终的PDF文件。
    • 用户还可以输入输出文件的名称。
    • 根据用户的选择,程序会调用相应的函数来执行任务。

引用的库:

import time
from itertools import product
from tkinter import filedialog
import fitz
import os
from watermarker.marker import add_mark

这几个库不能少,少一个都用不了,time库引入是为了在每个提示语后留一定时间给使用者看,itertools的这个是为了迭代图片的数值就是像素,一个个获取像素信息,thinker这个库是为了实现选择文件的可视化,因为输入文件路径很麻烦还要退出去复制,很多人甚至不懂,所以就用它跳到Windows的文件管理进行选择,fitz库是用来将图片转换成pdf的一个库,用它可以打开指定图片保存到一个文档中,然后继续插入图片,最后导出成pdf,os库是为了指定文件的路径选择,确保定位到那个文件,最后一个watermarker是添加水印的集成库,好像是简化了那个PIL(Python Imaging Library)。安装所需要的库需要用到指令,这个可以在pycharm的terminal指令台里输入,但我更喜欢使用系统的命令提示符,打开win,搜索cmd就会看到࿰

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值