フォルダー内の画像をPDF化する。
画像ファイルを一つのPDFにまとめることは、
プロジェクトやレポート、プレゼンテーションなどで非常に便利です。
特に、複数の画像ファイルを整理し、一つのファイルとして共有したい場合に役立ちます。
本記事では、Pythonを使ってフォルダー内の画像ファイルを簡単にPDFに変換する方法を紹介します。
- 複数の画像ファイルを一つにまとめたい
- 画像をPDFに変換する方法を探している
- プロジェクトやレポートに画像を一括で取り込みたい
画像をPDF化するメリット
画像をPDF化することで、複数の画像ファイルを一つにまとめることができます。
これにより、ファイル管理が容易になり、共有や印刷が簡単になります。
また、PDFは広くサポートされているフォーマットであり、
PCやiPad、スマートフォンなど異なるデバイスやプラットフォームでも一貫した表示が可能です。
さらに、PDFファイルはセキュリティ機能も備えており、
パスワード保護や編集制限を設定することができます。
PDF化するモジュール
画像をPDFにするモジュールは、「img2pdf」、「FPDF」などがあります。
img2pdf | FPDF | |
使いやすさ | 非常に簡単 | 少し難しい |
変換速度 | 高速 | img2pdfよりやや遅い |
画像品質 | 元の品質を保持 | 圧縮で品質が低下する可能性がある |
ファイルサイズ | 大きくなる可能性がある | 圧縮で小さくなる |
多機能性 | 低機能 (画像の変換に特化、テキストNG) | 高機能 (テキスト、グラフィック、リンクなどの追加が可能) |
カスタマイズ性 | 制限が多い | 高い |
img2pdfは、手短なコードで処理できますが、ファイルが大きくなります。
対して、FPDFは、複雑な処理が可能なので、ファイルのサイズを小さくできます。
FPDFは、コードエラーが良く起きたので、
画像変換だけの場合は、img2pdfを使うのがおすすめ。
img2pdfの場合は、次のようなコードで画像をPDF化できます。
import img2pdf
from pathlib import Path
# 画像ファイルのパスを指定
image_path = 'input.jpg'
images_path =['input1.jpg','input2.jpg','input3.jpg'] #複数の画像を1つのPDFにする。
pdf_path = 'output.pdf'
# 画像をPDFに変換して保存
with open(pdf_path, "wb") as f:
f.write(img2pdf.convert(image_path))
print(f"PDF saved as {pdf_path}")
フォルダー内の画像をPDF化する
フォルダー内の複数の画像ファイルを一つのPDFファイルにまとめる手順について説明します。
本記事では、Pythonを使用して簡単に実現する方法を紹介します。
ソースコード
import os
from PIL import Image
import img2pdf
import tkinter as tk
from tkinter import filedialog
def select_folder():
root = tk.Tk()
root.withdraw()
folder_path = filedialog.askdirectory()
return folder_path
def convert_images_to_pdf(folder_path):
if not folder_path:
print("フォルダーが選択されていません。")
return
images = []
for file_name in os.listdir(folder_path):
if file_name.lower().endswith(('.png', '.jpg', '.jpeg', '.tiff', '.bmp', '.gif')):
file_path = os.path.join(folder_path, file_name)
images.append(file_path)
if not images:
print("フォルダー内に画像ファイルが見つかりませんでした。")
return
folder_name = os.path.basename(folder_path)
pdf_path = os.path.join(folder_path, f"{folder_name}.pdf")
with open(pdf_path, "wb") as f:
f.write(img2pdf.convert(images))
print(f"PDFが作成されました: {pdf_path}")
if __name__ == "__main__":
folder_path = select_folder()
convert_images_to_pdf(folder_path)
UdemyでPythonを学習
Udemyは、オンデマンド式の学習講座です。
趣味から実務まで使えるおすすめの講座を紹介します。
- 現役シリコンバレーエンジニアが教えるPython 3 入門 + 応用 +アメリカのシリコンバレー流コードスタイル
Pythonをインストールから環境設定、基本文法が学習
さらに暗号化、インフラ自動化、非同期処理についても学べます。
Pythonを基礎から応用まで学びたい人におすすめ
- みんなのAI講座 ゼロからPythonで学ぶ人工知能と機械学習 【2024年最新版】
機械学習ライブラリで文字認識や株価分析などを行う。
人口知能やニューラルネットワーク、機械学習を学びたい人におすすめ。
- 【世界で55万人が受講】データサイエンティストを目指すあなたへ〜データサイエンス25時間ブートキャンプ〜
統計分析、機械学習の実装、ディープラーニングの実装を学習。
データサイエンティストになりたい人におすすめ。
- 0から始めるTkinterの使い方完全マスター講座〜Python×GUIの基礎・応用〜
TkinterのGUIを作成から発展的な操作までアプリ実例を示して学習。
アプリ開発したい人におすすめ。
解説
ユーザーが選択したフォルダー内の画像ファイルをPDFファイルに変換します。
- ライブラリ
「os」:ファイルやディレクトリの操作を行うために使用します。
「PIL」:Python Imaging Libraryで、画像の操作や変換を行います。
「img2pdf」:画像ファイルをPDFに変換します。
「tkinter」:GUIを作成し、フォルダー選択ダイアログを表示します。
- 変換する画像フォルダーを選択する
select_folder関数は、ユーザーにフォルダーを選択させ、そのパスを返します。
tk.Tk()でGUIのルートウィンドウを作成し、root.withdraw()で非表示にした後、filedialog.askdirectory()を使用してフォルダー選択ダイアログを表示します。
- 画像ファイルの収集とPDFの作成
convert_images_to_pdf関数は、選択されたフォルダー内の画像ファイルを収集し、PDFに変換します。
フォルダーが選択されていない場合やフォルダー内に画像ファイルがない場合は、
エラーメッセージを表示します。
次に、画像ファイルのパスをリストに追加します。
各ファイル名が画像の拡張子(.png, .jpg, .jpeg, .tiff, .bmp, .gif)のいずれかで終わる場合、
そのファイルのパスを取得します。
最後に、img2pdf.convertを使用してPDFを作成し、指定されたパスに保存します。
実演
スクリプトを実行すると、フォルダー選択ダイアログが表示されます。
変換したい画像が含まれるフォルダーを選択します。
スクリプトは選択されたフォルダー内の画像ファイルを収集し、一つのPDFファイルに変換します。
変換されたPDFファイルがフォルダー内に保存されます。
まとめ
このスクリプトを使用することで、フォルダー内の画像ファイルを簡単にPDFに変換できます。
PDFにすることで、ファイル管理や共有が簡単になり、様々なデバイスで一貫した表示が可能です。Pythonのライブラリを活用することで、画像処理やファイル操作が効率的に行えます。