我有以下代碼回圈遍歷多個檔案夾中具有任何擴展名的所有影像,然后將這些影像轉換為 pdf 我卡在保存 pdf 檔案的最后一行
from PIL import Image
import os
path = 'MAIN'
ext = ['.jpg', '.jpeg', '.png', '.bmp', '.tif', '.tiff']
for root, dirs, files in os.walk(path):
for file in files:
if(file.endswith(tuple(ext))):
sFilePath = os.path.join(root,file)
print(sFilePath.split('.')[0])
img = Image.open(sFilePath)
img = img.convert('RGB')
img.save(os.path.join(sFilePath.split('.')[0], '.pdf'))
我需要補充的另一點是在將影像檔案轉換為pdf后將其洗掉
@martineau 至于您提供的出色解決方案,我嘗試更改使用 img2pdf 將影像轉換為 pdf 的方式這是我的嘗試
import img2pdf
with open(path_object.parent / (path_object.stem '.pdf'), 'wb') as f:
f.write(img2pdf.convert(str(path_object)))
使用帶有 alpha 通道的影像,我收到了這條訊息
Image contains an alpha channel which will be stored as a separate soft mask (/SMask) image in PDF.
這是與 alpha 通道影像相關的錯誤訊息的快照

uj5u.com熱心網友回復:
另一種方法是使用pathlib模塊,該模塊允許將檔案和檔案夾路徑作為物件嘗試并通過面向物件的編程范例或模型進行操作——這通常會產生非常簡潔的代碼:
from pathlib import Path
from PIL import Image
path = Path('./images')
exts = {'.jpg', '.jpeg', '.png', '.bmp', '.tif', '.tiff'}
for path_object in path.glob('**/*'):
if path_object.is_file() and path_object.suffix in exts:
img = Image.open(path_object)
img = img.convert('RGB')
img.save(path_object.parent / (path_object.stem '.pdf'))
uj5u.com熱心網友回復:
您可以使用該os.path.splitext()函式來獲取影像檔案名的基本部分,然后將其與.pdf您想要使用的擴展名結合起來os.path.join()。(請注意,將其轉換為RGB與將其轉換為 PDF 格式不同。)
from PIL import Image
import os
path = './'
ext = ['.jpg', '.jpeg', '.png', '.bmp', '.tif', '.tiff']
for root, dirs, files in os.walk(path):
for file in files:
if file.endswith(tuple(ext)):
src_image_path = os.path.join(root, file)
base_name = os.path.splitext(file)[0]
img = Image.open(src_image_path)
img = img.convert('RGB')
img.save(os.path.join(root, base_name '.pdf'))
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/446936.html
