欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

python為圖片和PDF去水印詳解

 更新時間:2022年01月19日 09:31:33   作者:Python 技術  
大家好,本篇文章主要講的是python為圖片和PDF去水印詳解,感興趣的同學趕快來看一看吧,對你有幫助的話記得收藏一下

網(wǎng)上下載的 pdf 學習資料有一些會帶有水印,非常影響閱讀。比如下面的圖片就是在 pdf 文件上截取出來的。

29ff87305928769313f4b190c5284259.png

安裝模塊

PIL:Python Imaging Library 是 python 上非常強大的圖像處理標準庫,但是只能支持 python 2.7,于是就有志愿者在 PIL 的基礎上創(chuàng)建了支持 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 數(shù)據(jù)。

def remove_img():
    image_file = input("請輸入圖片地址:")
 
    img = Image.open(image_file)
    width, height = img.size
 
    for pos in product(range(width), range(height)):
        rgb = img.getpixel(pos)[:3]
        print(rgb)

圖片去水印

用微信截圖的方式查看水印像素點的 RGB。

1941d470a50ef2a5b2cde3ee6827077c.png

可以看到水印的 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')

示例結果:

06e69e34c27fcfba5f71e6eb1bb1bad4.png

PDF 去水印

PDF 去水印的原理和圖片去水印的原理大致相同,用 PyMuPDF 打開 pdf 文件后,將 pdf 的每一頁都轉換為圖片 pixmap,pixmap 有它自己的 RGB,只需要將 pdf 水印中的 RGB 改為(255, 255, 255) 最后保存為圖片。

def remove_pdf():
    page_num = 0
    pdf_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

示例結果:

a339227d96384fc49f15a76865d5fec2.png

圖片轉為 pdf

圖片轉 pdf 需要注意的是圖片的排序,數(shù)字文件名必須先轉換為 int 類型后排序。用 PyMuPDF 模塊打開圖片后將圖片用 convertToPDF() 函數(shù)轉成單頁的 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為圖片和PDF去水印詳解的文章就介紹到這了,更多相關python圖片和PDF去水印內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!

相關文章

  • django中F表達式和Q函數(shù)應用與原理詳解

    django中F表達式和Q函數(shù)應用與原理詳解

    F對象查詢與Q對象查詢,剛看到大家一定會感到很陌生,其實它們也是 Django 提供的查詢方法,而且非常的簡單的高效,下面這篇文章主要給大家介紹了關于django中F表達式和Q函數(shù)應用與原理的相關資料,需要的朋友可以參考下
    2023-05-05
  • 使用Pyinstaller的最新踩坑實戰(zhàn)記錄

    使用Pyinstaller的最新踩坑實戰(zhàn)記錄

    這篇文章主要給大家介紹了最近在使用Pyinstaller的踩坑實戰(zhàn)記錄,主要介紹了PYTHON2X.DLL缺失和WINDOWS2003 32BIT提示程序無效這兩個問題的解決方法,文中給出了詳細的解決方法,需要的朋友們下面來一起看看吧。
    2017-11-11
  • Python實現(xiàn)的rsa加密算法詳解

    Python實現(xiàn)的rsa加密算法詳解

    這篇文章主要介紹了Python實現(xiàn)的rsa加密算法,結合完整實例形式分析了Python實現(xiàn)rsa加密算法的原理、步驟與相關操作技巧,需要的朋友可以參考下
    2018-01-01
  • Pycharm在指定目錄下生成文件和刪除文件的實現(xiàn)

    Pycharm在指定目錄下生成文件和刪除文件的實現(xiàn)

    這篇文章主要介紹了Pycharm在指定目錄下生成文件和刪除文件的實現(xiàn),文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2020-12-12
  • python裝飾器原理與用法深入詳解

    python裝飾器原理與用法深入詳解

    這篇文章主要介紹了python裝飾器原理與用法,結合實例形式深入分析了Python裝飾器的概念、原理、使用方法及相關操作注意事項,需要的朋友可以參考下
    2019-12-12
  • 在matlab中創(chuàng)建類似字典的數(shù)據(jù)結構方式

    在matlab中創(chuàng)建類似字典的數(shù)據(jù)結構方式

    這篇文章主要介紹了在matlab中創(chuàng)建類似字典的數(shù)據(jù)結構方式,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2023-03-03
  • 用Python程序抓取網(wǎng)頁的HTML信息的一個小實例

    用Python程序抓取網(wǎng)頁的HTML信息的一個小實例

    這篇文章主要介紹了用Python程序抓取網(wǎng)頁的HTML信息的一個小實例,用到的方法同時也是用Python編寫爬蟲的基礎,需要的朋友可以參考下
    2015-05-05
  • 使用python?matplotlib畫折線圖實例代碼

    使用python?matplotlib畫折線圖實例代碼

    Matplotlib是一個Python工具箱,用于科學計算的數(shù)據(jù)可視化,下面這篇文章主要給大家介紹了關于如何使用python?matplotlib畫折線圖的相關資料,文中通過實例代碼介紹的非常詳細,需要的朋友可以參考下
    2022-04-04
  • Python流行ORM框架sqlalchemy的簡單使用

    Python流行ORM框架sqlalchemy的簡單使用

    這篇文章主要介紹了Python流行ORM框架sqlalchemy的簡單使用,本文給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2021-07-07
  • 分享Python開發(fā)中要注意的十個小貼士

    分享Python開發(fā)中要注意的十個小貼士

    不管是python開發(fā)還是其他什么語言的開發(fā),如果在開發(fā)中我們能掌握一些有用的貼士和技巧,那么肯定會大大提高我們的開發(fā)效率,今天小編和大家分享的就是python開發(fā)中,一些初學這門語言常常會犯的錯誤,一起來看看吧。
    2016-08-08

最新評論