修改下面的代码:增加截取120*120区域for filename in os.listdir(path1): # 判断是否为PDF文件 if filename.endswith(".pdf"): # 使用fitz库打开PDF文件,并获取页面数量 pdf_path = os.path.join(path1, filename) doc = fitz.open(pdf_path) page_count = doc.page_count # 逐页将PDF保存为高清图片 for i in range(page_count): page = doc[i] zoom = 4 # 放大倍数 rotate = int(0) # 不旋转 trans = fitz.Matrix(zoom, zoom).preRotate(rotate) pix = page.get_pixmap(matrix=trans, alpha=False) img_path = os.path.join(path2, f"{os.path.splitext(filename)[0]}_{i+1}.jpg") img = Image.frombytes("RGB", [pix.width, pix.height], pix.samples) img.save(img_path, dpi=(300, 300)) # 设置输出图片的分辨率 # 关闭PDF文件 doc.close() # 删除原PDF文件 os.remove(pdf_path)
时间: 2024-02-14 11:24:58 浏览: 168
解决python中os.listdir()函数读取文件夹下文件的乱序和排序问题
5星 · 资源好评率100%
下面是修改后的代码,增加了截取120*120区域的功能:
```python
import os
from PIL import Image
import fitz
path1 = 'path/to/your/input/folder' # 输入文件夹路径
path2 = 'path/to/your/output/folder' # 输出文件夹路径
for filename in os.listdir(path1):
# 判断是否为PDF文件
if filename.endswith(".pdf"):
# 使用fitz库打开PDF文件,并获取页面数量
pdf_path = os.path.join(path1, filename)
doc = fitz.open(pdf_path)
page_count = doc.page_count
# 逐页将PDF保存为高清图片
for i in range(page_count):
page = doc[i]
zoom = 4 # 放大倍数
rotate = int(0) # 不旋转
trans = fitz.Matrix(zoom, zoom).preRotate(rotate)
pix = page.get_pixmap(matrix=trans, alpha=False)
# 截取指定区域
cropped_pix = pix.crop((0, 0, 120, 120))
img_path = os.path.join(path2, f"{os.path.splitext(filename)[0]}_{i+1}.jpg")
img = Image.frombytes("RGB", [cropped_pix.width, cropped_pix.height], cropped_pix.samples)
img.save(img_path, dpi=(300, 300)) # 设置输出图片的分辨率
# 关闭PDF文件
doc.close()
# 删除原PDF文件
os.remove(pdf_path)
```
请替换`path1`为你的输入文件夹路径,`path2`为你的输出文件夹路径。这段代码将会遍历输入文件夹中的PDF文件,将每个页面截取120*120区域,并保存为高清图片。最后,会删除原始的PDF文件。
确保你已经安装了所需的库(fitz和PIL),可以使用`pip install PyMuPDF pillow`命令安装它们。
阅读全文