文 | 某某白米饭

来源:Python 技术「ID: pythonall」

网上下载的 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 面前消失了。小伙伴们学会了吗?

PS:公号内回复「Python」即可进入Python 新手学习交流群,一起 100 天计划!

老规矩,兄弟们还记得么,右下角的 “在看” 点一下,如果感觉文章内容不错的话,记得分享朋友圈让更多的人知道!

代码获取方式】

识别文末二维码,回复:某某白米饭

超简单!为图片和 PDF 上去掉水印相关推荐

  1. Python 为图片和 PDF 上去掉水印,超简单快来学!

    python去水印 安装模块 导入需要用到的模块 获取图片的 RGB 图片去水印 PDF 去水印 图片转为 pdf 总结 网上下载的 pdf 学习资料有一些会带有水印,非常影响阅读. 比如下面的图片就 ...

  2. 超简单的图片爬取项目,复制粘贴就能用,批量爬取动漫图片。(保姆教程,可根据需要修改URL)

    各位未来国家栋梁们好啊~相信栋梁们经常需要在网络上寻找各种资源,作为二次元的必备精神食粮,图片资源那是必不可少!在这里用python写了一个超简单的图片爬取小项目~话不多说,附上源码!(有用的话点个赞 ...

  3. dw在php图片滑动切换效果,超简单的图片左右切换滑动

    网上看过很多图片左右切换滑动的效果,不过大都是使用插件实现.插件虽方便,但是对于新手的学习并不是最好的.本文使用jquery这个由原生的JavaScript封装的库,用最简短的代码实现此功能 效果预览 ...

  4. 图片怎么转jpg?教你两个超简单的图片转jpg格式的方法

    图片怎么转jpg?我们平时在工作当中经常会使用到图片素材,这些图片素材各种格式都有,其中最常见的有jpg.png.webp等格式,但是这些图片素材在使用的时候却并不是都能直接用,因为大部分网络平台可以 ...

  5. 超简单教你在树莓派上安装opencv(二)

    超简单教你在树莓派上安装opencv(二) 前言 一.如何基于python3.9.2安装OpenCv? 1.1 查看自己系统位数及Python版本,跟对教程 1.2 换源 1.3 更新 1.4 安装依 ...

  6. PDF能编辑吗,怎样去掉PDF上的水印

    随着PDF文件使用的越来越多,PDF文件的修改也是大家常常谈论到的话题,在编辑文件的时候需要使用PDF编辑器,那么,文件中如果有水印,想要删除水印怎么使用编辑器删除呢,是不是有很多的小伙伴也想知道呢, ...

  7. 怎么在pdf上加水印?

    怎么在pdf上加水印?PDF文件凭借着良好的稳定性和兼容性成为我们办公时文件格式的首先,pdf文件中如果包含了一些重要信息内容时,我们都会想方法尽量对其进行保护,这时候就需要给pdf文件添加我们的专属 ...

  8. python处理pdf实例_Python程序图片和pdf上文字识别实例

    实例一:先减少背景杂音,再做图片文字识别 为了提高识别率,先用opencv-python对扫描的图片做预处理(减少背景杂音),然后调用pytesseract识别图片上的文字.处理方式就是: 学习Pyt ...

  9. 超简单的图片去水印方法,看完就会!

    大家都知道,现在我们不少在网上下载的图片都是带有水印的,看起来实在是不是很和谐,所以总是有很多小伙伴在想方设法的去除图片上的各种水印.别担心,今天小编将分享给大家一些超级简单的去水印方法,帮大家解决这 ...

最新文章

  1. 数据结构:二分查找 java
  2. CC2541对AT24CXX系列存储器的支持
  3. Spring Cloud(八)使用Zipkin进行分布式链路跟踪
  4. sendmail邮件服务搭建详细解   小小子
  5. Android Service与Runnable整合并用
  6. mysql安装8.013_Mysql 8.0.13 安装
  7. java并发编程实战阅读总结(b)
  8. F5 BIGip 负载均衡 IP算法解密工具
  9. Java创建对象详解
  10. 浙大计算机学院吴飞,浙江大学吴飞教授来我院作人工智能学术报告
  11. 最后一周|高级转录组分析和R语言数据可视化第十二期 (线上线下同时开课)...
  12. 图灵测试是什么?为什么AlphaGo那么牛却过不了?
  13. Deformable-DETR的学习笔记
  14. 干货 | 我如何考察面试者的机器学习水平
  15. 怎么把flac转换成ogg格式
  16. 2020-2021 年度广东省职业院校学生专业技能大赛网络空间安全赛项竞赛规程
  17. 如何在手机和电脑之间共享文件以及共享模拟器网络给电脑
  18. ensp 下一跳选址
  19. python k线形态识别_K线形态及识别要点大全
  20. 微信授权二维码样式修改

热门文章

  1. 【极简教程】Linux Shell 脚本编程
  2. 虚拟串口软件:VSPD的使用
  3. 桌面应用程序脚本录制
  4. 小孔成像总结_初中物理150条知识点总结,非常珍贵!
  5. python程序设计第五章答案_中国大学MOOC第五章单元测试答案_Python程序设计期末答案...
  6. 每一个被别人吃得死死的人,其实是…
  7. 单页面应用——SPA
  8. 阿里测试工程师聊:软件测试需要学什么?
  9. Keras深度学习实战(35)——构建机器翻译模型
  10. 如何查美国公司的年报