网上下载的 pdf 学习资料有一些会带有水印,非常影响阅读。比如下面的图片就是在 pdf 文件上截取出来的。

安装模块

PIL:Python Imaging Library 是 python 上非常强大的图像处理标准库,但是只能支持 python 2.7,于是就有志愿者在 PIL 的基础上创建了支持 python 3的 pillow,并加入了一些新的特性。

pip install pillow

pymupdf 可以用 python 访问扩展名为*.pdf、.xps、.oxps、.epub、.cbz或*.fb2的文件。还支持了许多流行的图像格式,包括多页TIFF图像。

pip install PyMuPDF

导入需要用到的模块

from PIL import Image
from itertools import product
import fitz
import os

获取图片的 RGB

pdf 去水印的原理和图片去水印的原理差不多,小编先从去除上面那张图片的水印开始。

学过计算机的小伙伴们都知道 ,计算机中用 RGB 代表红绿蓝,用 (255, 0, 0) 表示红色,(0, 255, 0) 表示绿色,(0, 0, 255) 表示蓝色,(255, 255, 255) 表示白色,(0, 0, 0) 表示黑色,去水印的原理就是将水印的颜色变成白色(255, 255, 255)。

首先获取图片宽和高,用 itertools 模块获取宽和高的笛卡尔积作为像素点。每个像素点的颜色都由 前三位的 RGB 和 第四位的 Alpha 通道构成。Alpha 通道不需要,只要 RGB 数据。

def remove_img():image_file = input("请输入图片地址:")img = Image.open(image_file)width, height = img.sizefor pos in product(range(width), range(height)):rgb = img.getpixel(pos)[:3]print(rgb)

图片去水印

用微信截图的方式查看水印像素点的 RGB。


可以看到水印的 RGB 是 (210, 210, 210),这里用 RGB 的和超过 620 就判定是水印点,此时将像素颜色替换为白色。最后保存图片。

rgb = img.getpixel(pos)[:3]
if(sum(rgb) >= 620):img.putpixel(pos, (255, 255, 255))img.save('d:/qsy.png')

示例结果:

PDF 去水印

PDF 去水印的原理和图片去水印的原理大致相同,用 PyMuPDF 打开 pdf 文件后,将 pdf 的每一页都转换为图片 pixmap,pixmap 有它自己的 RGB,只需要将 pdf 水印中的 RGB 改为(255, 255, 255) 最后保存为图片。

def remove_pdf():page_num = 0pdf_file = input("请输入 pdf 地址:")pdf = fitz.open(pdf_file);for page in pdf:pixmap = page.get_pixmap()for pos in product(range(pixmap.width), range(pixmap.height)):rgb = pixmap.pixel(pos[0], pos[1])if(sum(rgb) >= 620):pixmap.set_pixel(pos[0], pos[1], (255, 255, 255))pixmap.pil_save(f"d:/pdf_images/{page_num}.png")print(f"第{page_num}水印去除完成")page_num = page_num + 1

示例结果:

图片转为 pdf

图片转 pdf 需要注意的是图片的排序,数字文件名必须先转换为 int 类型后排序。用 PyMuPDF 模块打开图片后将图片用 convertToPDF() 函数转成单页的 pdf。插入到新的 pdf 文件中。

def pic2pdf():pic_dir = input("请输入图片文件夹路径:")pdf = fitz.open()img_files = sorted(os.listdir(pic_dir),key=lambda x:int(str(x).split('.')[0]))for img in img_files:print(img)imgdoc = fitz.open(pic_dir + '/' + img)  pdfbytes = imgdoc.convertToPDF()   imgpdf = fitz.open("pdf", pdfbytes)pdf.insertPDF(imgpdf)       pdf.save("d:/demo.pdf")         pdf.close()

总结

pdf 和图片上恼人的水印终于可以在强大的 python 面前消失了。小伙伴们学会了吗?

关于Python技术储备

学好 Python 不论是就业还是做副业赚钱都不错,但要学会 Python 还是要有一个学习规划。最后大家分享一份全套的 Python 学习资料,给那些想学习 Python 的小伙伴们一点帮助!

一、Python所有方向的学习路线

Python所有方向路线就是把Python常用的技术点做整理,形成各个领域的知识点汇总,它的用处就在于,你可以按照上面的知识点去找对应的学习资源,保证自己学得较为全面。

二、学习软件

工欲善其事必先利其器。学习Python常用的开发软件都在这里了,给大家节省了很多时间。

三、入门学习视频

我们在看视频学习的时候,不能光动眼动脑不动手,比较科学的学习方法是在理解之后运用它们,这时候练手项目就很适合了。

四、实战案例

光学理论是没用的,要学会跟着一起敲,要动手实操,才能将自己的所学运用到实际当中去,这时候可以搞点实战案例来学习。

五、面试资料

我们学习Python必然是为了找到高薪的工作,下面这些面试题是来自阿里、腾讯、字节等一线互联网大厂最新的面试资料,并且有阿里大佬给出了权威的解答,刷完这一套面试资料相信大家都能找到满意的工作。


这份完整版的Python全套学习资料已经上传CSDN,朋友们如果需要可以微信扫描下方CSDN官方认证二维码免费领取【保证100%免费

Python资料、技术、课程、解答、咨询也可以直接点击下面名片,添加官方客服斯琪

黑科技编程开发,利用Python使图片完美去除水印相关推荐

  1. python黑科技脚本_利用Python实现FGO自动战斗脚本,再也不用爆肝啦~

    欢迎点击右上角关注小编,除了分享技术文章之外还有很多福利,私信学习资料可以领取包括不限于Python实战演练.PDF电子文档.面试集锦.学习资料等. 利用Python实现FGO自动战斗脚本,再也不用爆 ...

  2. python 添加半透明水印_如何利用python给图片添加半透明水印

    前言 本文主要给大家介绍了关于python图片添加半透明水印的相关资料,分享出来供大家参考学习,下面话不多说了,来一起看看详细的介绍吧 示例代码: # coding:utf-8 from PIL im ...

  3. python 添加半透明水印_怎么利用python给图片添加半透明水印

    前言 本文主要给大家简介了关于python图片添加半透明水印的相关资料,共享出来供大家参考学习,下面话不多说了,来一起看看具体的简介吧 示例代码: # coding:utf-8 from PIL im ...

  4. 利用python改图片为任意颜色

    一.利用到的库 利用python改变图片颜色的实现主要依靠pillow模块.Python的版本和pillow的版本对应是相对来说最容易使人混乱地方. 版本对应如下: 利用pycharm下载对应pill ...

  5. 【Python例】利用 python 进行图片文字信息的提取 --- OCR-EasyOCR

    [Python例]利用 python 进行图片文字信息的提取 - OCR-EasyOCR 本文主要用于记录,并使用 python 脚本进行图片文字信息的生成. 什么是 OCR? OCR OCR(Opt ...

  6. pythonmat文件转excel,利用python将图片转换成excel文档格式

    前言 本文主要介绍了关于利用python将图片转换成excel文档的相关内容,分享出来供大家参考学习,下面话不多说了,来一起看看详细的介绍吧. 实现步骤 读取图像,获取图像每个像素点的RGB值: 根据 ...

  7. 怎样用python生成中文字符画_如何利用Python实现图片转字符画详解

    本篇文章主要介绍了Python实现图片转字符画的示例,小编觉得挺不错的,现在分享给大家,也给大家做个参考.一起跟随小编过来看看吧 字符画真的很有意思,将图片中的像素用字符代替,就生成了字符画. 但是像 ...

  8. pythonmat文件转excel_利用python将图片转换成excel文档格式详解

    本文主要介绍了关于利用python将图片转换成excel文档的相关内容,编写了一小段Python代码,将图片转为了Excel,纯属娱乐,下面这篇文章主要给大家介绍了关于利用python将图片转换成ex ...

  9. python读取图片文字为表格_利用python将图片转换成excel文档格式

    前言 本文主要介绍了关于利用python将图片转换成excel文档的相关内容,分享出来供大家参考学习,下面话不多说了,来一起看看详细的介绍吧. 实现步骤 读取图像,获取图像每个像素点的RGB值: 根据 ...

最新文章

  1. Transformer新玩法登Nature子刊
  2. php设计是什么意思,php的设计模式是什么
  3. ASA和4503的配置
  4. pxe+kickstart 实现基于网络的无人值守安装操作系统
  5. 创新的迷思——2019 Microsoft Hackathon 苏州站回顾
  6. IDEA Maven的下载和配置
  7. 华为云华中大联合实验室,夺得2019ICDAR发票识别竞赛世界第一
  8. c# 数据结构 ---双链表
  9. Tomcat是如何将请求一步步传递到我们编写的HttpServlet类中的
  10. ADRC自抗扰控制,有手就行
  11. 如何对网站服务器进行安全防护
  12. allure的安装使用以及报告的生成
  13. word文字铺满页面_word如何把行铺满页面 怎样使word文档铺满页面
  14. vba python 基金历史排名_历史数据揭秘:跟着业绩排名买基金靠谱吗?
  15. 5G技术是如何改变我们的生活
  16. 360屏保广告彻底关闭教程
  17. Modelsim搭建只有driver的UVM验证平台
  18. 少儿平台e启学用户隐私协议
  19. (详解)区间DP —— 平行四边形优化
  20. 常用的几种集合(Map另写)

热门文章

  1. 北斗时钟服务器(GPS卫星同步时钟)应用电子政务系统
  2. 这11个免费学习的网站,个个堪称神器,不收后悔!
  3. 如何将多个excel表格合并成一个_如何将多个PDF文档合并为一个
  4. C# Winform ToolStripContainer ToolStrip相关用法记录
  5. 【回溯专题】—— 回溯算法入门篇
  6. layui设置textarea高度
  7. 软件运行的好好的,突然黑屏啥也进不去了
  8. 【PCL自学:Segmentation3】基于PCL的点云分割:区域增长分割
  9. 百度easydl数据标注
  10. 蓝牙HC-05出现进入AT模式之后串口发送AT无返回值或者返回乱码情况