吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 818|回复: 16
收起左侧

[Python 原创] PDF文件批量转换成图片

[复制链接]
guoshenmexian 发表于 2025-6-10 17:12
1.pdf批量转换jpg,适用子文件夹较多的文件
2.同时可以把png、jpeg的图片统一转换成jpg
3.可选择转换后是否保存原pdf文件

免费评分

参与人数 1吾爱币 +1 热心值 +1 收起 理由
ccgao + 1 + 1 我很赞同!

查看全部评分

发帖前要善用论坛搜索功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。

naixubao 发表于 2025-6-11 10:26
楼主,你好,我是小白,能不能做好程序,我们光用就行了,谢谢。
just4p 发表于 2025-6-11 10:01
 楼主| guoshenmexian 发表于 2025-6-10 17:13
[Python] 纯文本查看 复制代码
import os
import fitz
from PIL import Image


def pdf_to_jpg(pdf_path, zoom_x=2.0, zoom_y=2.0, image_quality=90, keep_pdf=True):
        pdf_document = fitz.open(pdf_path)
        for page_number in range(len(pdf_document)):
            page = pdf_document.load_page(page_number)
            mat = fitz.Matrix(zoom_x, zoom_y)
            pix = page.get_pixmap(matrix=mat)
            image_name = f"{os.path.splitext(os.path.basename(pdf_path))[0]}_page{page_number + 1}.jpg"
            image_path = os.path.join(os.path.dirname(pdf_path), image_name)
            image = Image.frombytes("RGB", [pix.width, pix.height], pix.samples)
            image.save(image_path, "JPEG", quality=image_quality)
        pdf_document.close()
        if not keep_pdf:
            os.remove(pdf_path)
    

def png_to_jpg(png_path, image_quality=90):
    with Image.open(png_path) as img:
            rgb_img = img.convert('RGB')
            jpg_name = os.path.splitext(os.path.basename(png_path))[0] + '.jpg'
            jpg_path = os.path.join(os.path.dirname(png_path), jpg_name)
            rgb_img.save(jpg_path, 'JPEG', quality=image_quality)
    os.remove(png_path)
    

def jpeg_to_jpg(jpeg_path, image_quality=90):
    with Image.open(jpeg_path) as img:
            rgb_img = img.convert('RGB')
            jpg_name = os.path.splitext(os.path.basename(jpeg_path))[0] + '.jpg'
            jpg_path = os.path.join(os.path.dirname(jpeg_path), jpg_name)
            rgb_img.save(jpg_path, 'JPEG', quality=image_quality)
    os.remove(jpeg_path)


def convert_all_files_in_folder(folder_path, zoom_x=2.0, zoom_y=2.0, image_quality=90, keep_pdf=True):
    for root, dirs, files in os.walk(folder_path):
        for file in files:
            if file.lower().endswith('.pdf'):
                pdf_path = os.path.join(root, file)
                pdf_to_jpg(pdf_path, zoom_x, zoom_y, image_quality, keep_pdf)
            elif file.lower().endswith('.png'):
                png_path = os.path.join(root, file)
                png_to_jpg(png_path, image_quality)
            elif file.lower().endswith('.jpeg'):
                jpeg_path = os.path.join(root, file)
                jpeg_to_jpg(jpeg_path, image_quality)


if __name__ == "__main__":
    target_folder = '识别专用'
    zoom_x_factor = 2.0
    zoom_y_factor = 2.0
    save_quality = 90
    config = {
     "keep_original_pdf": True,  # 此行注释则不会保存原PDF文件
        }
    keep_original_pdf = config.get("keep_original_pdf", False)
    convert_all_files_in_folder(target_folder, zoom_x_factor, zoom_y_factor, save_quality, keep_original_pdf)
SherlockQIU 发表于 2025-6-10 19:18
真不错,比wps强
wocaishihuanxio 发表于 2025-6-10 19:41
谢谢分享
cioceo 发表于 2025-6-10 19:47
guoshenmexian 发表于 2025-6-10 17:13
[mw_shl_code=python,true]import os
import fitz
from PIL import Image

运行不成功呢
xiaojundeng 发表于 2025-6-10 22:24
感谢分享,刚好需要
daoye9988 发表于 2025-6-11 07:21
导出图片更方便
grrr_zhao 发表于 2025-6-11 07:49
难住我了,纯支持了。
qwsss31 发表于 2025-6-11 08:40
确实比某ps强多了。。。
Alex_107 发表于 2025-6-11 09:05
谢谢楼主分享
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

返回列表

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - LCG - LSG ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2025-6-15 17:16

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表