[Python] jpgファイルを読み込む方法
Pythonでjpgファイルを読み込むには、一般的にPillowライブラリを使用します。
PillowはPython Imaging Library (PIL) の後継で、画像の読み込みや操作が可能です。
まず、pip install Pillow
でインストールし、from PIL import Image
を使って画像を読み込みます。
Image.open('path_to_image.jpg')
でjpgファイルを開き、img.show()
で表示、img.save('new_image.jpg')
で保存が可能です。
Pillowライブラリのインストール方法
Pillowとは?
Pillowは、Pythonで画像処理を行うためのライブラリです。
PIL(Python Imaging Library)の後継として開発され、画像の読み込み、表示、変換、加工など、さまざまな機能を提供しています。
JPEG、PNG、GIFなど、多くの画像フォーマットに対応しており、簡単に画像を扱うことができます。
Pillowのインストール手順
Pillowをインストールするには、Pythonのパッケージ管理ツールであるpipを使用します。
以下のコマンドをターミナルまたはコマンドプロンプトで実行してください。
pip install Pillow
手順 | 内容 |
---|---|
1 | ターミナルまたはコマンドプロンプトを開く |
2 | pip install Pillow と入力して実行する |
3 | インストールが完了するまで待つ |
インストール確認方法
Pillowが正しくインストールされたか確認するには、Pythonのインタラクティブシェルを開き、以下のコードを実行します。
from PIL import Image
# Pillowのバージョンを表示
print(Image.__version__)
このコードを実行すると、インストールされたPillowのバージョンが表示されます。
例えば、以下のような出力が得られます。
8.4.0
Pillowのバージョンが表示されれば、インストールは成功しています。
jpgファイルの読み込み方法
Image.open()を使った基本的な読み込み
Pillowを使用してJPEGファイルを読み込むには、Image.open()メソッド
を使用します。
このメソッドは、指定したファイルパスの画像を開き、画像オブジェクトを返します。
以下は、基本的な読み込みのサンプルコードです。
from PIL import Image
# jpgファイルを読み込む
image = Image.open('sample.jpg')
このコードでは、sample.jpg
という名前のJPEGファイルを読み込んでいます。
ファイル名は、実際のファイル名に置き換えてください。
読み込んだ画像の表示方法
読み込んだ画像を表示するには、show()メソッド
を使用します。
このメソッドを呼び出すと、デフォルトの画像ビューアで画像が表示されます。
以下は、画像を表示するためのサンプルコードです。
from PIL import Image
# jpgファイルを読み込む
image = Image.open('sample.jpg')
# 画像を表示する
image.show()
このコードを実行すると、指定したJPEG画像が表示されます。
読み込んだ画像のサイズやフォーマットの確認方法
読み込んだ画像のサイズやフォーマットを確認するには、size
属性とformat
属性を使用します。
size
属性は画像の幅と高さをタプルで返し、format
属性は画像のフォーマットを返します。
以下は、サイズとフォーマットを確認するためのサンプルコードです。
from PIL import Image
# jpgファイルを読み込む
image = Image.open('sample.jpg')
# 画像のサイズを取得
width, height = image.size
print(f'画像のサイズ: {width} x {height}')
# 画像のフォーマットを取得
print(f'画像のフォーマット: {image.format}')
このコードを実行すると、画像のサイズとフォーマットが表示されます。
例えば、以下のような出力が得られます。
画像のサイズ: 800 x 600
画像のフォーマット: JPEG
これにより、読み込んだ画像の基本情報を簡単に確認することができます。
jpgファイルの操作
画像のリサイズ方法
画像のリサイズは、resize()メソッド
を使用して行います。
このメソッドには、新しいサイズを指定するタプルを渡します。
以下は、画像をリサイズするためのサンプルコードです。
from PIL import Image
# jpgファイルを読み込む
image = Image.open('sample.jpg')
# 画像をリサイズする
new_size = (400, 300) # 新しいサイズ (幅, 高さ)
resized_image = image.resize(new_size)
# リサイズした画像を表示する
resized_image.show()
このコードでは、元の画像を400×300ピクセルにリサイズしています。
リサイズ後の画像は、デフォルトの画像ビューアで表示されます。
画像の回転方法
画像を回転させるには、rotate()メソッド
を使用します。
このメソッドには、回転角度を指定します。
以下は、画像を90度回転させるためのサンプルコードです。
from PIL import Image
# jpgファイルを読み込む
image = Image.open('sample.jpg')
# 画像を90度回転させる
rotated_image = image.rotate(90)
# 回転した画像を表示する
rotated_image.show()
このコードを実行すると、指定した画像が90度回転して表示されます。
画像のトリミング方法
画像のトリミングは、crop()メソッド
を使用して行います。
このメソッドには、トリミングする領域を指定するタプルを渡します。
以下は、画像をトリミングするためのサンプルコードです。
from PIL import Image
# jpgファイルを読み込む
image = Image.open('sample.jpg')
# トリミングする領域を指定 (左, 上, 右, 下)
crop_area = (100, 100, 400, 400)
cropped_image = image.crop(crop_area)
# トリミングした画像を表示する
cropped_image.show()
このコードでは、指定した領域をトリミングして新しい画像を作成し、表示します。
画像の保存方法
画像を保存するには、save()メソッド
を使用します。
このメソッドには、保存先のファイル名を指定します。
以下は、画像をJPEG形式で保存するためのサンプルコードです。
from PIL import Image
# jpgファイルを読み込む
image = Image.open('sample.jpg')
# 画像をリサイズする
resized_image = image.resize((400, 300))
# リサイズした画像を保存する
resized_image.save('resized_sample.jpg')
このコードを実行すると、リサイズした画像がresized_sample.jpg
という名前で保存されます。
保存する際には、ファイル名の拡張子を指定することで、異なるフォーマットで保存することも可能です。
画像のフォーマット変換
jpgからpngへの変換方法
JPEG形式の画像をPNG形式に変換するには、save()メソッド
を使用して新しいファイル名に拡張子を指定します。
以下は、JPEG画像をPNG形式に変換するためのサンプルコードです。
from PIL import Image
# jpgファイルを読み込む
image = Image.open('sample.jpg')
# 画像をPNG形式で保存する
image.save('converted_image.png', format='PNG')
このコードを実行すると、sample.jpg
がconverted_image.png
として保存されます。
PNG形式はロスレス圧縮を使用しているため、画質が保持されます。
jpgから他のフォーマットへの変換方法
JPEG画像は、他の多くのフォーマットにも変換可能です。
例えば、GIFやBMP形式に変換することもできます。
以下は、JPEG画像をGIF形式に変換するためのサンプルコードです。
from PIL import Image
# jpgファイルを読み込む
image = Image.open('sample.jpg')
# 画像をGIF形式で保存する
image.save('converted_image.gif', format='GIF')
このコードを実行すると、sample.jpg
がconverted_image.gif
として保存されます。
必要に応じて、他のフォーマット(例えば、BMP)にも同様に変換できます。
画像の圧縮と画質調整
画像を保存する際に、圧縮率や画質を調整することができます。
JPEG形式の場合、quality
パラメータを指定することで画質を調整できます。
以下は、JPEG画像を圧縮して保存するためのサンプルコードです。
from PIL import Image
# jpgファイルを読み込む
image = Image.open('sample.jpg')
# 画像を圧縮して保存する (画質を50%に設定)
image.save('compressed_image.jpg', format='JPEG', quality=50)
このコードを実行すると、sample.jpg
が画質50%でcompressed_image.jpg
として保存されます。
画質の値は1から100の範囲で指定でき、値が低いほど圧縮率が高くなり、画質が低下します。
適切な値を選ぶことで、ファイルサイズを小さくしつつ、画質を保つことができます。
エラーハンドリング
ファイルが存在しない場合の対処法
画像ファイルを読み込む際に、指定したファイルが存在しない場合、FileNotFoundError
が発生します。
このエラーを適切に処理するためには、try
とexcept
を使用してエラーハンドリングを行います。
以下は、ファイルが存在しない場合の対処法を示すサンプルコードです。
from PIL import Image
# jpgファイルを読み込む
file_path = 'non_existent_file.jpg'
try:
image = Image.open(file_path)
except FileNotFoundError:
print(f'エラー: {file_path} が見つかりません。ファイル名を確認してください。')
このコードを実行すると、指定したファイルが存在しない場合にエラーメッセージが表示されます。
読み込み時のフォーマットエラーの対処法
画像ファイルが正しいフォーマットでない場合、OSError
が発生します。
このエラーもtry
とexcept
を使用して処理できます。
以下は、読み込み時のフォーマットエラーの対処法を示すサンプルコードです。
from PIL import Image
# jpgファイルを読み込む
file_path = 'invalid_format_file.txt'
try:
image = Image.open(file_path)
except OSError:
print(f'エラー: {file_path} は画像ファイルではありません。正しいフォーマットのファイルを指定してください。')
このコードを実行すると、指定したファイルが画像フォーマットでない場合にエラーメッセージが表示されます。
メモリ不足エラーの対処法
大きな画像ファイルを読み込む際に、メモリ不足が原因でMemoryError
が発生することがあります。
このエラーに対処するためには、画像を小さくリサイズしてから処理する方法があります。
以下は、メモリ不足エラーの対処法を示すサンプルコードです。
from PIL import Image
# jpgファイルを読み込む
file_path = 'large_image.jpg'
try:
image = Image.open(file_path)
# 画像を小さくリサイズする
image.thumbnail((800, 800)) # 最大800x800ピクセルにリサイズ
except MemoryError:
print('エラー: メモリ不足です。画像を小さくして再試行してください。')
このコードでは、メモリ不足が発生した場合にエラーメッセージを表示します。
また、thumbnail()メソッド
を使用して、画像を指定したサイズにリサイズすることで、メモリの使用量を抑えることができます。
応用例
画像をグレースケールに変換する方法
画像をグレースケールに変換するには、convert()メソッド
を使用します。
このメソッドに'L'
を指定することで、画像をグレースケールに変換できます。
以下は、グレースケール変換のサンプルコードです。
from PIL import Image
# jpgファイルを読み込む
image = Image.open('sample.jpg')
# 画像をグレースケールに変換する
gray_image = image.convert('L')
# グレースケール画像を表示する
gray_image.show()
このコードを実行すると、指定した画像がグレースケールに変換されて表示されます。
画像にテキストを追加する方法
画像にテキストを追加するには、ImageDraw
モジュールを使用します。
以下は、画像にテキストを追加するためのサンプルコードです。
from PIL import Image, ImageDraw, ImageFont
# jpgファイルを読み込む
image = Image.open('sample.jpg')
# ImageDrawオブジェクトを作成
draw = ImageDraw.Draw(image)
# フォントを指定(デフォルトフォントを使用)
font = ImageFont.load_default()
# テキストを追加する
text = "こんにちは、世界!"
draw.text((10, 10), text, fill="white", font=font)
# テキストを追加した画像を表示する
image.show()
このコードでは、指定した位置にテキストを追加し、画像を表示します。
テキストの色やフォントも変更可能です。
画像を複数枚結合する方法
複数の画像を結合するには、paste()メソッド
を使用します。
以下は、2つの画像を横に結合するためのサンプルコードです。
from PIL import Image
# 2つのjpgファイルを読み込む
image1 = Image.open('image1.jpg')
image2 = Image.open('image2.jpg')
# 結合するための新しい画像を作成
combined_width = image1.width + image2.width
combined_height = max(image1.height, image2.height)
combined_image = Image.new('RGB', (combined_width, combined_height))
# 画像を結合する
combined_image.paste(image1, (0, 0))
combined_image.paste(image2, (image1.width, 0))
# 結合した画像を表示する
combined_image.show()
このコードを実行すると、2つの画像が横に結合された新しい画像が表示されます。
画像をサムネイルに変換する方法
画像をサムネイルに変換するには、thumbnail()メソッド
を使用します。
このメソッドは、指定したサイズに収まるように画像をリサイズします。
以下は、サムネイル変換のサンプルコードです。
from PIL import Image
# jpgファイルを読み込む
image = Image.open('sample.jpg')
# サムネイルを作成する
thumbnail_size = (100, 100) # 最大サイズ
image.thumbnail(thumbnail_size)
# サムネイル画像を表示する
image.show()
このコードを実行すると、指定したサイズにリサイズされたサムネイル画像が表示されます。
画像の一括処理を行う方法
複数の画像に対して一括処理を行うには、ループを使用して各画像に対して処理を適用します。
以下は、指定したフォルダ内のすべてのJPEG画像をグレースケールに変換して保存するサンプルコードです。
import os
from PIL import Image
# 画像が保存されているフォルダのパス
folder_path = 'images/'
# フォルダ内のすべてのファイルを処理
for filename in os.listdir(folder_path):
if filename.endswith('.jpg'):
# jpgファイルを読み込む
image = Image.open(os.path.join(folder_path, filename))
# 画像をグレースケールに変換
gray_image = image.convert('L')
# グレースケール画像を保存する
gray_image.save(os.path.join(folder_path, f'gray_{filename}'))
このコードを実行すると、指定したフォルダ内のすべてのJPEG画像がグレースケールに変換され、gray_
というプレフィックスが付けられて保存されます。
これにより、一括処理が簡単に行えます。
まとめ
この記事では、PythonのPillowライブラリを使用してJPEGファイルを読み込み、さまざまな操作を行う方法について詳しく解説しました。
画像のリサイズや回転、トリミング、フォーマット変換など、実用的な技術を学ぶことで、画像処理の幅が広がります。
ぜひ、実際にコードを試してみて、画像処理のスキルを向上させてください。