国产片侵犯亲女视频播放_亚洲精品二区_在线免费国产视频_欧美精品一区二区三区在线_少妇久久久_在线观看av不卡

腳本之家,腳本語言編程技術(shù)及教程分享平臺!
分類導(dǎo)航

Python|VBS|Ruby|Lua|perl|VBA|Golang|PowerShell|Erlang|autoit|Dos|bat|

服務(wù)器之家 - 腳本之家 - Python - Python去除PDF水印的實(shí)現(xiàn)示例

Python去除PDF水印的實(shí)現(xiàn)示例

2022-02-22 12:49渡碼 Python

本文主要介紹了Python去除PDF水印的實(shí)現(xiàn)示例,思路很簡單,代碼也很簡潔。具有一定的參考價(jià)值,感興趣的可以了解一下

今天介紹下用 Python 去除 PDF (圖片)的水印。思路很簡單,代碼也很簡潔。

首先來考慮 Python 如何去除圖片的水印,然后再將思路復(fù)用到 PDF 上面。

Python去除PDF水印的實(shí)現(xiàn)示例

這張圖片是前幾天整理《數(shù)據(jù)結(jié)構(gòu)和算法》PDF里的一個(gè)截圖,帶著公眾號的水印。

從上圖可以明顯看到,為了不影響閱讀正文,水印顏色一般比較淺。因此,我們可以利用顏色差這個(gè)特征來去掉水印。即:用 Python 讀取圖片的顏色,并將淺顏色部分變白。

Python 標(biāo)準(zhǔn)庫 PIL 可以獲取圖片的顏色,Python2 是系統(tǒng)自帶的,Python3 需要自己安裝,我用的 Python 3.8,需要執(zhí)行以下

命令安裝

?
1
pip install pillow

安裝完成,讀取圖片,并獲取圖片的尺寸(寬度和高度)

?
1
2
3
4
from PIL import Image
 
img = Image.open('watermark_pic.png')
width, height = img.size

進(jìn)行下一步之前,先簡單介紹下計(jì)算機(jī)里關(guān)于顏色的知識。光學(xué)三原色是紅綠藍(lán)(RGB),也就是說它們是不可分解的三種基本顏色,其他顏色都可以通過這三種顏色混合而成,三種顏色等比例混合就是白色,沒有光就是黑色。

在計(jì)算機(jī)中,可以用三個(gè)字節(jié)表示 RGB 顏色,1個(gè)字節(jié)能表示的最大數(shù)值是 255, 所以,(255, 0, 0)代表紅色,(0, 255, 0)代表綠色,(0, 0, 255)代表藍(lán)色。相應(yīng)地,(255, 255, 255)代表白色,(0, 0, 0)代表黑色。從(0, 0, 0) ~ (255, 255, 255) 之間的任意組合都可以代表一個(gè)不同的顏色。

接下來我們可以通過下面代碼讀取圖片的 RGB

?
1
2
3
4
for i in range(width):
    for j in range(height):
        pos = (i, j)
        print(img.getpixel(pos)[:3])

圖片每個(gè)位置顏色由四元組表示,前三位分別是 RGB,第四位是 Alpha 通道,我們不需要關(guān)心。

有了 RGB ,我們就可以對其修改。

Python去除PDF水印的實(shí)現(xiàn)示例

從圖中可以發(fā)現(xiàn),水印的 RGB 是 #d9d9d9,這里是用十六進(jìn)制表示的,其實(shí)就是(217, 217, 217)。

這三個(gè)顏色值都越靠近 255,顏色就越淡,當(dāng)它們都變成 255,也就成了白色。所以只要 RGB 都大于 217 的位置,我們都可以給它填成白色。即:RGB 三位數(shù)之和大于等于 651。

?
1
2
if sum(img.getpixel(pos)[:3]) >= 651:
    img.putpixel(pos, (255, 255, 255))

完整代碼如下:

?
1
2
3
4
5
6
7
8
9
10
11
12
from PIL import Image
 
img = Image.open('watermark_pic.png')
width, height = img.size
 
for i in range(width):
    for j in range(height):
        pos = (i, j)
        if sum(img.getpixel(pos)[:3]) >= 651:
            img.putpixel(pos, (255, 255, 255))
 
img.save('watermark_removed_pic.png')

有了上面的基礎(chǔ),去除 PDF 的水印就簡單了,思路是將每頁 PDF 轉(zhuǎn)成圖片,然后修改水印的 RGB,最后輸出圖片即可。

安裝 pymupdf 庫,用來來操作 PDF

?
1
pip install pymupdf

讀取 PDF,并轉(zhuǎn)圖片

?
1
2
3
4
5
import fitz
 
doc = fitz.open("數(shù)據(jù)結(jié)構(gòu)和算法手冊@公眾號渡碼.pdf")
for page in doc:
    pix = page.get_pixmap()

該 PDF 共 480 頁,所以需要遍歷每一頁,并獲取每一頁對應(yīng)的圖片pix。pix對象類似于我們上面看到的img對象,可以讀取、修改它的 RGB。

page.get_pixmap() 這個(gè)操作是不可逆的,即能夠?qū)崿F(xiàn)從 PDF 到圖片的轉(zhuǎn)換,但修改圖片 RGB 后無法應(yīng)用到 PDF 上,只能輸出為圖片。

修改水印 RGB 跟剛才一樣,區(qū)別是這里的 RGB 是一個(gè)三元組,沒有 Alpha 通道,代碼如下:

?
1
2
3
4
5
from itertools import product
 
for pos in product(range(pix.width), range(pix.height)):
    if sum(pix.pixel(pos[0], pos[1])) >= 651:
        pix.set_pixel(pos[0], pos[1], (255, 255, 255))

完整代碼如下:

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
from itertools import product
import fitz
 
 
doc = fitz.open("數(shù)據(jù)結(jié)構(gòu)和算法手冊@公眾號渡碼.pdf")
 
page_no = 0
for page in doc:
    pix = page.get_pixmap()
 
    for pos in product(range(pix.width), range(pix.height)):
        if sum(pix.pixel(pos[0], pos[1])) >= 651:
            pix.set_pixel(pos[0], pos[1], (255, 255, 255))
 
    pix.pil_save(f"pdf_pics/page_{page_no}.png", dpi=(30000, 30000))
 
    print(f'第 {page_no} 頁去除完成')
    page_no += 1

這種方案是有缺點(diǎn)的,第一,輸出并非 PDF 格式;第二,輸出的圖片比較模糊,后續(xù)還有待優(yōu)化,最好是能直接修改 PDF。

到此這篇關(guān)于Python去除PDF水印的實(shí)現(xiàn)示例的文章就介紹到這了,更多相關(guān)Python去除PDF水印內(nèi)容請搜索服務(wù)器之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持服務(wù)器之家!

原文鏈接:https://www.cnblogs.com/duma/p/15491801.html

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: 欧美在线视频一区二区 | 久久久久久国产 | 欧美日韩一区二区三区视频 | 亚洲天堂中文字幕 | 自拍亚洲 | 亚洲香蕉视频 | 香蕉久久一区二区不卡无毒影院 | 久久69精品久久久久久国产越南 | 九一午夜精品av | 国产精品a久久久久 | 成年人毛片视频 | 中文字幕一区三级久久日本 | 影音先锋网址 | 不卡一区二区三区视频 | 亚洲成人伦理 | 91香蕉视频 | 国产精品高潮呻吟久久 | 国产精品美女久久久久久久久久久 | 国产精品99久久久久久久女警 | 色婷婷综合久久久中字幕精品久久 | 在线小视频| 精品国产一区二区三区高潮视 | 午夜私人影院 | 99视频这里有精品 | 国产精品成人一区二区三区 | 国产一级视频 | 99久久免费视频在线观看 | 欧美一区2区 | x99av成人免费 | 日日鲁鲁 | 精品免费在线 | 在线免费观看黄色 | 天天久久| 久草高清在线 | 伊人久久婷婷色综合98网 | 国产精品爱久久久久久久 | 国产精品久久久久无码av | 日韩高清国产一区在线 | 久久久成人精品 | 久久久亚洲精品中文字幕 | a在线看 |