使用Python將圖片轉(zhuǎn)換為PDF格式的三種常見方法
引言
在日常工作和學(xué)習(xí)中,我們經(jīng)常需要將多張圖片合并成一個(gè)PDF文件,以便于分享或打印。Python提供了多種庫(kù)來實(shí)現(xiàn)這一需求,本文將詳細(xì)介紹三種常用的方法:img2pdf庫(kù)、Pillow庫(kù)和PyMuPDF庫(kù),并附上完整的代碼示例。
方法一:使用img2pdf庫(kù)
簡(jiǎn)介
img2pdf是一個(gè)專門用于將圖片轉(zhuǎn)換為PDF的高效工具,支持多種圖片格式(如JPEG、PNG等),且轉(zhuǎn)換過程中不會(huì)損失圖片質(zhì)量。
安裝
pip install img2pdf
代碼示例
import img2pdf
# 定義圖片路徑列表
image_paths = ['image1.jpg', 'image2.png', 'image3.jpeg']
# 將圖片轉(zhuǎn)換為PDF字節(jié)流
pdf_bytes = img2pdf.convert(image_paths)
# 保存為PDF文件
with open('output.pdf', 'wb') as f:
f.write(pdf_bytes)
print("PDF文件已成功生成!")
優(yōu)勢(shì)
- 高效快速:直接將圖片數(shù)據(jù)嵌入PDF,無需重新編碼。
- 無損轉(zhuǎn)換:保持原始圖片質(zhì)量。
- 支持多圖:自動(dòng)將多張圖片分頁(yè)到同一PDF中。
方法二:使用Pillow庫(kù)
簡(jiǎn)介
Pillow是Python中常用的圖像處理庫(kù),支持打開、編輯和保存多種圖片格式,也可用于將圖片轉(zhuǎn)換為PDF。
安裝
pip install Pillow
代碼示例(單張圖片)
from PIL import Image
# 打開圖片
image = Image.open('input.jpg')
# 保存為PDF(默認(rèn)分辨率72DPI)
image.save('output.pdf', 'PDF', resolution=300) # 設(shè)置分辨率為300DPI
print("單張圖片已轉(zhuǎn)換為PDF!")
代碼示例(多張圖片合并)
from PIL import Image
import os
# 定義圖片路徑列表
image_paths = ['image1.jpg', 'image2.png', 'image3.jpeg']
# 打開所有圖片并轉(zhuǎn)換為RGB模式
images = [Image.open(img).convert('RGB') for img in image_paths]
# 保存第一張圖片為PDF,并追加剩余圖片
images[0].save(
'combined.pdf',
'PDF',
save_all=True,
append_images=images[1:]
)
print("多張圖片已合并為PDF!")
注意事項(xiàng)
- 分辨率調(diào)整:通過
resolution參數(shù)可優(yōu)化PDF清晰度。 - 模式轉(zhuǎn)換:確保圖片為RGB模式,否則可能無法保存為PDF。
方法三:使用PyMuPDF庫(kù)
簡(jiǎn)介
PyMuPDF(即fitz)是一個(gè)功能強(qiáng)大的PDF處理庫(kù),支持添加圖片、調(diào)整頁(yè)面布局等高級(jí)操作。
安裝
pip install pymupdf
代碼示例
import fitz # PyMuPDF的別名
# 創(chuàng)建空白PDF文檔
doc = fitz.open()
# 添加圖片到PDF
for img_path in ['image1.jpg', 'image2.png']:
img = fitz.open(img_path) # 打開圖片
rect = fitz.Rect(0, 0, img.media_box.width, img.media_box.height)
page = doc.new_page(width=rect.width, height=rect.height) # 創(chuàng)建新頁(yè)面
page.insert_image(rect, filename=img_path) # 插入圖片
# 保存PDF
doc.save('output.pdf')
doc.close()
print("PDF文件已生成!")
優(yōu)勢(shì)
- 靈活布局:可自定義頁(yè)面大小、邊距等。
- 高級(jí)功能:支持添加水印、合并PDF等操作。
方案對(duì)比
| 方法 | 適用場(chǎng)景 | 優(yōu)點(diǎn) | 缺點(diǎn) |
|---|---|---|---|
| img2pdf | 批量轉(zhuǎn)換、追求速度和無損質(zhì)量 | 快速、高效、無損 | 僅支持基礎(chǔ)轉(zhuǎn)換 |
| Pillow | 單張圖片轉(zhuǎn)換、簡(jiǎn)單合并 | 輕量級(jí)、易用 | 多圖合并需額外處理 |
| PyMuPDF | 需要定制PDF布局或高級(jí)功能 | 功能強(qiáng)大、靈活 | 學(xué)習(xí)成本稍高 |
常見問題解答
1. 如何調(diào)整PDF的頁(yè)面大???
- img2pdf:通過
layout_fun參數(shù)自定義布局(需指定紙張尺寸)。 - PyMuPDF:在
new_page中設(shè)置width和height參數(shù)。
2. 轉(zhuǎn)換后的PDF文件過大怎么辦?
- 使用
img2pdf時(shí),確保圖片格式為JPEG或PNG(已壓縮格式)。 - 通過
Pillow的savefig參數(shù)調(diào)整分辨率(如dpi=150)。
3. 支持哪些圖片格式?
- 所有方法均支持JPEG、PNG、BMP等常見格式。
- img2pdf還支持TIFF、WebP等格式。
總結(jié)
- 推薦方案:
- 批量轉(zhuǎn)換:優(yōu)先使用
img2pdf庫(kù)。 - 簡(jiǎn)單需求:選擇
Pillow庫(kù)。 - 高級(jí)定制:使用
PyMuPDF庫(kù)。
- 批量轉(zhuǎn)換:優(yōu)先使用
通過本文的三種方法,您可以輕松實(shí)現(xiàn)圖片到PDF的轉(zhuǎn)換,并根據(jù)具體需求選擇最合適的工具。
到此這篇關(guān)于使用Python將圖片轉(zhuǎn)換為PDF格式的三種常見方法的文章就介紹到這了,更多相關(guān)Python將圖片轉(zhuǎn)為PDF內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
用pyqt5 給按鈕設(shè)置圖標(biāo)和css樣式的方法
今天小編就為大家分享一篇用pyqt5 給按鈕設(shè)置圖標(biāo)和css樣式的方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧2019-06-06
Python實(shí)現(xiàn)一個(gè)簡(jiǎn)單的畢業(yè)生信息管理系統(tǒng)的示例代碼
這篇文章主要介紹了Python實(shí)現(xiàn)一個(gè)簡(jiǎn)單的畢業(yè)生信息管理系統(tǒng)的示例代碼,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2020-06-06
python文字轉(zhuǎn)語(yǔ)音實(shí)現(xiàn)過程解析
這篇文章主要介紹了python文字轉(zhuǎn)語(yǔ)音實(shí)現(xiàn)過程解析,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2019-11-11
Python和Anaconda和Pycharm安裝教程圖文詳解
PyCharm是一種PythonIDE,帶有一整套可以幫助用戶在使用Python語(yǔ)言開發(fā)時(shí)提高其效率的工具,這篇文章主要介紹了Python和Anaconda和Pycharm安裝教程,需要的朋友可以參考下2020-02-02
Python利用AI接口實(shí)現(xiàn)摳圖并改圖片底色
時(shí)候我們的證件照需要換底色,又來不及去照相館拍照,用ps也不好摳圖,所以今天給你們分享一下如何用python來?yè)笀D,并換底色,需要的可以參考一下2022-09-09

