返回顶部
首页 > 资讯 > 后端开发 > Python >Python去除PDF水印的实现示例
  • 355
分享到

Python去除PDF水印的实现示例

2024-04-02 19:04:59 355人浏览 薄情痞子

Python 官方文档:入门教程 => 点击学习

摘要

今天介绍下用 python 去除 pdf (图片)的水印。思路很简单,代码也很简洁。 首先来考虑 Python 如何去除图片的水印,然后再将思路复用到 PDF 上面。 这张图片是前

今天介绍下用 python 去除 pdf (图片)的水印。思路很简单,代码也很简洁。

首先来考虑 Python 如何去除图片的水印,然后再将思路复用到 PDF 上面。

这张图片是前几天整理《数据结构算法》PDF里的一个截图,带着公众号的水印。

从上图可以明显看到,为了不影响阅读正文,水印颜色一般比较浅。因此,我们可以利用颜色差这个特征来去掉水印。即:用 Python 读取图片的颜色,并将浅颜色部分变白。

Python 标准库 PIL 可以获取图片的颜色,Python2 是系统自带的,python3 需要自己安装,我用的 Python 3.8,需要执行以下

命令安装


pip install pillow

安装完成,读取图片,并获取图片的尺寸(宽度和高度)


from PIL import Image

img = Image.open('watermark_pic.png')
width, height = img.size

进行下一步之前,先简单介绍下计算机里关于颜色的知识。光学三原色是红绿蓝(RGB),也就是说它们是不可分解的三种基本颜色,其他颜色都可以通过这三种颜色混合而成,三种颜色等比例混合就是白色,没有光就是黑色。

在计算机中,可以用三个字节表示 RGB 颜色,1个字节能表示的最大数值是 255, 所以,(255, 0, 0)代表红色,(0, 255, 0)代表绿色,(0, 0, 255)代表蓝色。相应地,(255, 255, 255)代表白色,(0, 0, 0)代表黑色。从(0, 0, 0) ~ (255, 255, 255) 之间的任意组合都可以代表一个不同的颜色。

接下来我们可以通过下面代码读取图片的 RGB


for i in range(width):
    for j in range(height):
        pos = (i, j)
        print(img.getpixel(pos)[:3])

图片每个位置颜色由四元组表示,前三位分别是 RGB,第四位是 Alpha 通道,我们不需要关心。

有了 RGB ,我们就可以对其修改。

从图中可以发现,水印的 RGB 是 #d9d9d9,这里是用十六进制表示的,其实就是(217, 217, 217)。

这三个颜色值都越靠近 255,颜色就越淡,当它们都变成 255,也就成了白色。所以只要 RGB 都大于 217 的位置,我们都可以给它填成白色。即:RGB 三位数之和大于等于 651。


if sum(img.getpixel(pos)[:3]) >= 651:
    img.putpixel(pos, (255, 255, 255))

完整代码如下:


from PIL import Image

img = Image.open('watermark_pic.png')
width, height = img.size

for i in range(width):
    for j in range(height):
        pos = (i, j)
        if sum(img.getpixel(pos)[:3]) >= 651:
            img.putpixel(pos, (255, 255, 255))

img.save('watermark_removed_pic.png')

有了上面的基础,去除 PDF 的水印就简单了,思路是将每页 PDF 转成图片,然后修改水印的 RGB,最后输出图片即可。

安装 pymupdf 库,用来来操作 PDF


pip install pymupdf

读取 PDF,并转图片


import fitz

doc = fitz.open("数据结构和算法手册@公众号渡码.pdf")
for page in doc:
    pix = page.get_pixmap()

该 PDF 共 480 页,所以需要遍历每一页,并获取每一页对应的图片pix。pix对象类似于我们上面看到的img对象,可以读取、修改它的 RGB。

page.get_pixmap() 这个操作是不可逆的,即能够实现从 PDF 到图片的转换,但修改图片 RGB 后无法应用到 PDF 上,只能输出为图片。

修改水印 RGB 跟刚才一样,区别是这里的 RGB 是一个三元组,没有 Alpha 通道,代码如下:


from itertools import product

for pos in product(range(pix.width), range(pix.height)):
    if sum(pix.pixel(pos[0], pos[1])) >= 651:
        pix.set_pixel(pos[0], pos[1], (255, 255, 255))

完整代码如下:


from itertools import product
import fitz


doc = fitz.open("数据结构和算法手册@公众号渡码.pdf")

page_no = 0
for page in doc:
    pix = page.get_pixmap()

    for pos in product(range(pix.width), range(pix.height)):
        if sum(pix.pixel(pos[0], pos[1])) >= 651:
            pix.set_pixel(pos[0], pos[1], (255, 255, 255))

    pix.pil_save(f"pdf_pics/page_{page_no}.png", dpi=(30000, 30000))

    print(f'第 {page_no} 页去除完成')
    page_no += 1

这种方案是有缺点的,第一,输出并非 PDF 格式;第二,输出的图片比较模糊,后续还有待优化,最好是能直接修改 PDF。

到此这篇关于Python去除PDF水印的实现示例的文章就介绍到这了,更多相关Python去除PDF水印内容请搜索编程网以前的文章或继续浏览下面的相关文章希望大家以后多多支持编程网!

--结束END--

本文标题: Python去除PDF水印的实现示例

本文链接: https://lsjlt.com/news/156080.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • Python去除PDF水印的实现示例
    今天介绍下用 Python 去除 PDF (图片)的水印。思路很简单,代码也很简洁。 首先来考虑 Python 如何去除图片的水印,然后再将思路复用到 PDF 上面。 这张图片是前...
    99+
    2024-04-02
  • Python实现为PDF去除水印的示例代码
    目录前言原理特色成果安装依赖代码想法前言 为什么做出这个? 就是有时候从网上下载的资料中的pdf有水印,看着不舒服。 比如说我从网上下载的试卷,然后去打印店打印,打印之后水印看着很不...
    99+
    2024-04-02
  • SpringBoot实现PDF添加水印的示例
    目录简介方式1:使用 Apache PDFBox 库(1)添加 PDFBox 依赖(2)添加水印(3)完整代码方式2:使用 iText 库(1)添加 iText 依赖(2)添加水印(...
    99+
    2023-05-20
    SpringBoot PDF添加水印 SpringBoot 添加水印
  • 十行Python3代码实现去除pdf文件水印
    目录1、引言2、代码实战2.1 去除原理2.2 代码解析2.3 代码整合3、总结1、引言 小屌丝:鱼哥,最近有点不像话了。 小鱼:嗯?? 啥个意思嘛~ 小屌丝:一周了,没分享小知识了...
    99+
    2024-04-02
  • pdf中如何去除水印文字
    这篇文章给大家分享的是有关pdf中如何去除水印文字的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。去除方法:首先打开软件,点击页面顶部的“文件”选项卡,选择“打开”选项,点击“浏览”,打开需要进行操作的文件;然后点...
    99+
    2023-06-15
  • 基于python实现去除视频的水印
    我们再搬运视频的时候常常会遇到视频有水印的问题 如下 下面就通过python来实现对视频水印的去除 在pycharm新建一个项目,创建image,video目录其他不用 必要条件 在终端下载相关依赖包 pip install moviep...
    99+
    2023-09-14
    python 音视频 numpy
  • 【Python】Python 去除图片水印
    在Python中,你可以使用一些图像处理库来去除图片中的水印。其中一个常用的库是OpenCV,它提供了一些强大的图像处理功能。 首先 你需要安装OpenCV库。你可以使用以下命令在终端中安装它: pi...
    99+
    2023-10-18
    python opencv 计算机视觉
  • Python去除图片水印实现方法详解
    目录OpenCV介绍去水印图片去水印原理最近写文章遇到图片有水印,如何去除水印呢? 网上找了各种办法,也跑到小红书、抖音等平台找有没有不收费就去水印的网站,但是基本上都是需要VIP会...
    99+
    2023-01-06
    Python去除图片水印 Python去除水印
  • python怎么为图片和PDF去水印
    小编给大家分享一下python怎么为图片和PDF去水印,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!网上下载的 pdf 学习资料有一些会带有水印,非常影响阅读。比...
    99+
    2023-06-26
  • python为图片和PDF去水印详解
    目录安装模块获取图片的 RGB图片去水印PDF 去水印图片转为 pdf总结网上下载的 pdf 学习资料有一些会带有水印,非常影响阅读。比如下面的图片就是在 pdf 文件上截取出来的。...
    99+
    2024-04-02
  • 运用python去除图片水印
    目录OpenCV + Numpy函数简介色彩转换PIL  + itertools由于图片水印的种类有很多,今天我们先讲最简单的一种。 即上图中的①类水印,这种水印存在白色背景上的文档里,水印是灰色,需要保...
    99+
    2022-06-02
    python去水印 python 图片水印
  • Python实现为pdf添加水印功能
    目录创建需要的水印模板wps创建输出pdf水印pdf实现步骤安装依赖代码问题使用pypdf2出现编码问题解决方法感悟创建需要的水印模板 wps创建 输出pdf 水印pdf 实现...
    99+
    2024-04-02
  • Java实现超简单抖音去水印的示例详解
    目录一、前言二、原理与步骤三、代码实现四、总结一、前言 抖音去水印方法很简单,以前一直没有去研究,以为搞个去水印还要用到算法去除,直到动手的时候才发现这么简单,不用编程基础都能做。 ...
    99+
    2024-04-02
  • python批量加的水印如何去除
    要去除Python批量加的水印,你可以使用图像处理库来实现。以下是一个简单的示例代码,使用PIL库来去除水印:```from PIL...
    99+
    2023-08-12
    python
  • 1行Python代码实现去除图片水印详解
    目录正文一、代码运行,效果演示运行以下代码实现的效果如下二、已有功能正文 最近小明在开淘宝店,需要给自己的原创图片加水印,于是我上次给她开发了增加水印的功能:图片加水印,保护原创图...
    99+
    2023-03-19
    Python一行代码去水印 Python图片去水印
  • 利用Python+OpenCV三步去除水印
    目录一、推理原理二、推理步骤三、参考代码四、效果图一、推理原理 1.标定噪声的特征,使用cv2.inRange二值化标识噪声对图片进行二值化处理,具体代码:cv2.inRange(i...
    99+
    2024-04-02
  • 利用python OpenCV去除视频水印
    上面的图片展示的是视频中的某一帧,需要将图片中的,实体拓展和退出全屏以及右上角的两个圆圈按钮给删除掉。 解决思路一个很简单的想法就是,从图片上其它两块背景相同的地方,拷贝两个块替换...
    99+
    2024-04-02
  • 利用Golang和FFmpeg实现视频水印的去除
    要使用Golang和FFmpeg实现视频水印的去除,可以按照以下步骤进行操作:1. 安装FFmpeg:首先需要安装FFmpeg,可以...
    99+
    2023-10-08
    Golang
  • 怎么用1行Python代码实现去除图片水印
    这篇“怎么用1行Python代码实现去除图片水印”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“怎么用1行Python代码实现...
    99+
    2023-07-05
  • Java实现PDF转Word的示例代码(无水印无页数限制)
    目录一、前言二、jar破解1.项目远程仓库配置2.pom文件引入相关依赖3.破解代码三、pdf转word一、前言 学习概述:简单的介绍一下本篇文章要讲解的Java知识点 学习目标:读...
    99+
    2024-04-02
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作