Python去水印操作
看到有很多去水印的资源,但是有的方程并不适合新的python,或者转化后的清晰度太低,所以在前人的代码上改了一下,让fitz打开时存储更多信息.至于如何确定水印RGB,推荐微信截图功能,在将pdf转换成图片时可以先查看一下,我转的pdf的水印大部分的RGB加起来是631,但是边缘还是会没被去除干净,所以也可以用>=而不是==。
from itertools import product
import fitz
import os# 去除pdf的水印
def remove_pdfwatermark():#打开源pfd文件,这里将pdf和python执行文件放在同一路径下pdf_file = fitz.open("1.pdf")#建构fitz提取文件矩阵zoom=2mat=fitz.Matrix(zoom, zoom)#page_no 设置为0page_no = 0#page在pdf文件中遍历for page in pdf_file:#获取每一页对应的图片pix (pix对象类似于我们上面看到的img对象,可以读取、修改它的 RGB)#page.get_pixmap() 这个操作是不可逆的,即能够实现从 PDF 到图片的转换,但修改图片 RGB 后无法应用到 PDF 上,只能输出为图片pix = page.get_pixmap(matrix=mat)#遍历图片中的宽和高,如果像素的rgb值总和等于631,就认为是水印,转换成255,255,255-->即白色for pos in product(range(pix.width), range(pix.height)):if sum(pix.pixel(pos[0], pos[1])) == 631:pix.set_pixel(pos[0], pos[1], (255, 255, 255))#保存去掉水印的截图,在执行文件下新建名为png的文件夹pix.pil_save(f"./png/{page_no}.png", dpi=(30000, 30000))#打印结果print(f'第 {page_no} 页去除完成')page_no += 1
if __name__ == '__main__':remove_pdfwatermark()
#图片所在的文件夹
pic_dir = 'png'pdf = fitz.open()
#图片数字文件先转换成int类型进行排序
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)#将打开后的图片转成单页pdfpdfbytes = imgdoc.convert_to_pdf()imgpdf = fitz.open("pdf", pdfbytes)#将单页pdf插入到新的pdf文档中pdf.insert_pdf(imgpdf)
pdf.save("完成.pdf")
pdf.close()
Python去水印操作相关推荐
- OpenCV和Python动手操作计算机视觉学习教程
使用OpenCV和Python进行实际操作 面向初学者的OpenCV Python动手操作计算机视觉 你会学到: NumPy基础知识 基于OpenCV的人脸检测 使用OpenCV在图像和视频上绘制形状 ...
- python字典操作添加_Python字典常见操作实例小结【定义、添加、删除、遍历】
本文实例总结了python字典常见操作.分享给大家供大家参考,具体如下: 简单的字典: 字典就是键值对key-value组合. #字典 键值对组合 alien_0 ={'color':'green', ...
- python中年大叔学编程_中年大叔学编程-Python简单操作文件
原标题:中年大叔学编程-Python简单操作文件 在计算机中,经常打交道的就是各种文档,用得比较多的软件就是office和记事本来操作文件,那么我们试试用Python来简单读写文件. Open函数的用 ...
- python列表操作:追加元素到列表的代码
将做工程过程中常用的内容做个收藏,如下的内容是关于python列表操作:追加元素到列表的内容. scores = ["1","2","3"] ...
- python sqlalchemy操作SQLite
日期转时间: from sqlalchemy import Column, Integer, String, Float, Date date = Column(Date) data="20 ...
- python berkeley 操作——尤其提示 需版本匹配
python berkeley 操作 先到http://www.oracle.com/technetwork/database/database-technologies/berkeleydb/dow ...
- 初学Python——文件操作第二篇
前言:为什么需要第二篇文件操作?因为第一篇的知识根本不足以支撑基本的需求.下面来一一分析. 一.Python文件操作的特点 首先来类比一下,作为高级编程语言的始祖,C语言如何对文件进行操作? 字符(串 ...
- python关闭读写的所有的文件-Python文件操作:文件的打开关闭读取写入
Python文件操作:文件的打开关闭读取写入 一.文件的打开关闭 Python能以文本和二进制两种方式处理文件,本文主要讨论在Python3中文本文件的操作. 文件操作都分为以下几个步骤: 1.打开文 ...
- python处理excel表格实例-通过实例学习Python Excel操作
这篇文章主要介绍了通过实例学习Python Excel操作,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 1.python 读取Excel # -* ...
最新文章
- Day24--Part2-伪Ajax(iframe)
- 哪些云计算企业能活下来
- xmanager 3 远程连接REDHAT 4 桌面
- mysql bootstrap pxc_Mysql高可用之PXC
- 使用Servlet 3.0,Redis / Jedis和CDI的简单CRUD –第2部分
- oracle安装,未找到文件 F:\app\Administrator\product\11.2.0\dbhome_2\owb\external\oc4j_ap
- WinCE6下的kernelIoControl使用方法
- LeetCode 1136. 平行课程(拓扑排序)
- 23种设计模式之访问者模式
- 使用hexo创建blog
- LeetCode 434. Number of Segments in a String
- 数学公式识别:基于编码-解码模型
- 连续函数matlab采样,基于 MATLAB 的时域信号采样及频谱分析(转)
- linux六个标准目录,Linux基本目录规范——XDG
- TensorFlow2.0:tensorboard使用
- CSS 二十年发展简史
- Intellij Idea下tomcat设置自动编译
- Pytorch——计算机视觉工具包:torchvision
- lj245a引脚功能图_干货|教你如何看懂单片机时序图
- 大写金额用计算机简单些,大写一到十怎么写 数字一到十的大写怎么写(开票用的大写)...