Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Sangat mudah! Alih keluar tera air daripada imej dan PDF dengan Python

Sangat mudah! Alih keluar tera air daripada imej dan PDF dengan Python

WBOY
WBOYke hadapan
2023-04-12 23:43:012149semak imbas

Sangat mudah! Alih keluar tera air daripada imej dan PDF dengan Python

Sesetengah bahan pembelajaran pdf yang dimuat turun dalam talian akan mempunyai tera air, yang sangat mempengaruhi pembacaan. Sebagai contoh, gambar di bawah telah dipotong daripada fail pdf Hari ini kita akan menggunakan Python untuk menyelesaikan masalah ini.

Sangat mudah! Alih keluar tera air daripada imej dan PDF dengan Python

Pasang modul

PIL: Perpustakaan Pengimejan Python ialah perpustakaan standard pemprosesan imej yang sangat berkuasa dalam python, tetapi ia hanya boleh menyokong python 2.7, jadi saya mempunyai sukarelawan. Penulis mencipta bantal yang menyokong python 3 berdasarkan PIL dan menambah beberapa ciri baharu.

pip install pillow

pymupdf boleh menggunakan python untuk mengakses fail dengan sambungan *.pdf, .xps, .oxps, .epub, .cbz atau *.fb2. Banyak format imej popular turut disokong, termasuk imej TIFF berbilang halaman.

pip install PyMuPDF

Import modul yang diperlukan

from PIL import Image
from itertools import product
import fitz
import os

Dapatkan RGB imej

pdf Prinsip penyingkiran tera air adalah serupa dengan penyingkiran tera air imej editor dahulu Mulakan dengan mengalih keluar tera air daripada imej di atas.

Semua orang yang telah mempelajari komputer tahu bahawa RGB digunakan untuk mewakili merah, hijau dan biru dalam komputer, (255, 0, 0) digunakan untuk mewakili merah, (0, 255, 0) digunakan untuk mewakili hijau, (0, 0, 255) mewakili biru, (255, 255, 255) mewakili putih, (0, 0, 0) mewakili hitam Prinsip penyingkiran tera air adalah untuk menukar warna tera air kepada putih (255,. 255, 255).

Mula-mula dapatkan lebar dan tinggi imej, dan gunakan modul itertools untuk mendapatkan produk Cartesian lebar dan tinggi sebagai piksel. Warna setiap piksel terdiri daripada tiga bit pertama RGB dan bit keempat saluran Alpha. Saluran alfa tidak diperlukan, hanya data 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)

Alih keluar tera air daripada imej

Gunakan tangkapan skrin WeChat untuk menyemak RGB piksel tera air.

Sangat mudah! Alih keluar tera air daripada imej dan PDF dengan Python

Anda boleh melihat bahawa RGB bagi tera air ialah (210, 210, 210 Di sini, jika jumlah RGB melebihi 620, ia ditentukan sebagai tera air). titik pada masa ini, gantikan warna piksel dengan Putih. Akhirnya simpan gambar.

rgb = img.getpixel(pos)[:3]
if(sum(rgb) >= 620):
img.putpixel(pos, (255, 255, 255))
img.save('d:/qsy.png')

Contoh hasil:

Sangat mudah! Alih keluar tera air daripada imej dan PDF dengan Python

Penyingkiran tera air PDF

Prinsip penyingkiran tera air PDF adalah lebih kurang sama dengan imej penyingkiran tera air Selepas membuka fail pdf dengan PyMuPDF, tukar setiap halaman pdf menjadi imej pixmap mempunyai RGB sendiri. Anda hanya perlu menukar RGB dalam tera air pdf kepada (255, 255, 255) ia sebagai imej.

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

Contoh hasil:

Sangat mudah! Alih keluar tera air daripada imej dan PDF dengan Python

Tukar imej kepada pdf

Tukar imej kepada pdf Apa yang perlu diberi perhatian ialah susunan imej, fail digital Nama mesti ditukar kepada jenis int sebelum mengisih. Selepas membuka imej dengan modul PyMuPDF, gunakan fungsi convertToPDF() untuk menukar imej kepada pdf satu halaman. Masukkan ke dalam fail pdf baharu.

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()

Ringkasan

Tanda air yang menjengkelkan pada PDF dan gambar akhirnya boleh hilang di hadapan ular sawa yang berkuasa. Adakah anda sudah cukup belajar?

Atas ialah kandungan terperinci Sangat mudah! Alih keluar tera air daripada imej dan PDF dengan Python. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Artikel ini dikembalikan pada:51cto.com. Jika ada pelanggaran, sila hubungi admin@php.cn Padam