91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

python怎么為圖片和PDF去水印

發布時間:2022-01-19 10:28:57 來源:億速云 閱讀:278 作者:小新 欄目:開發技術

小編給大家分享一下python怎么為圖片和PDF去水印,相信大部分人都還不怎么了解,因此分享這篇文章給大家參考一下,希望大家閱讀完這篇文章后大有收獲,下面讓我們一起去了解一下吧!

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

python怎么為圖片和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.size
 
    for pos in product(range(width), range(height)):
        rgb = img.getpixel(pos)[:3]
        print(rgb)

圖片去水印

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

python怎么為圖片和PDF去水印

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

示例結果:

python怎么為圖片和PDF去水印

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

示例結果:

python怎么為圖片和PDF去水印

圖片轉為 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()

以上是“python怎么為圖片和PDF去水印”這篇文章的所有內容,感謝各位的閱讀!相信大家都有了一定的了解,希望分享的內容對大家有所幫助,如果還想學習更多知識,歡迎關注億速云行業資訊頻道!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

会理县| 平顺县| 达孜县| 镇雄县| 昌都县| 双鸭山市| 新宁县| 酉阳| 定安县| 大埔区| 墨脱县| 嵩明县| 扶绥县| 巴林左旗| 宁安市| 吉隆县| 电白县| 鸡东县| 榆中县| 北川| 安庆市| 通化县| 日喀则市| 安仁县| 三江| 保德县| 海盐县| 兴业县| 大理市| 色达县| 汕头市| 资阳市| 筠连县| 龙海市| 灵石县| 祁连县| 旺苍县| 阳新县| 奉化市| 宜川县| 临安市|