[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ライブラリのインストール方法
  • jpgファイルの基本的な読み込み
  • 画像のリサイズや回転の操作
  • 画像フォーマットの変換手法
  • エラーハンドリングの実践方法

目次から探す

Pillowライブラリのインストール方法

Pillowとは?

Pillowは、Pythonで画像処理を行うためのライブラリです。

PIL(Python Imaging Library)の後継として開発され、画像の読み込み、表示、変換、加工など、さまざまな機能を提供しています。

JPEG、PNG、GIFなど、多くの画像フォーマットに対応しており、簡単に画像を扱うことができます。

Pillowのインストール手順

Pillowをインストールするには、Pythonのパッケージ管理ツールであるpipを使用します。

以下のコマンドをターミナルまたはコマンドプロンプトで実行してください。

pip install Pillow
スクロールできます
手順内容
1ターミナルまたはコマンドプロンプトを開く
2pip 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.jpgconverted_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.jpgconverted_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が発生します。

このエラーを適切に処理するためには、tryexceptを使用してエラーハンドリングを行います。

以下は、ファイルが存在しない場合の対処法を示すサンプルコードです。

from PIL import Image
# jpgファイルを読み込む
file_path = 'non_existent_file.jpg'
try:
    image = Image.open(file_path)
except FileNotFoundError:
    print(f'エラー: {file_path} が見つかりません。ファイル名を確認してください。')

このコードを実行すると、指定したファイルが存在しない場合にエラーメッセージが表示されます。

読み込み時のフォーマットエラーの対処法

画像ファイルが正しいフォーマットでない場合、OSErrorが発生します。

このエラーもtryexceptを使用して処理できます。

以下は、読み込み時のフォーマットエラーの対処法を示すサンプルコードです。

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_というプレフィックスが付けられて保存されます。

これにより、一括処理が簡単に行えます。

よくある質問

jpgファイルを読み込む際にエラーが出るのはなぜ?

JPEGファイルを読み込む際にエラーが発生する主な原因は以下の通りです。

  • ファイルが存在しない: 指定したファイルパスが間違っているか、ファイルが削除されている可能性があります。
  • フォーマットエラー: 指定したファイルがJPEG形式でない場合、またはファイルが破損している場合にエラーが発生します。
  • メモリ不足: 大きな画像ファイルを読み込む際に、システムのメモリが不足している場合もエラーが発生します。

読み込んだ画像を別のフォーマットで保存するには?

読み込んだ画像を別のフォーマットで保存するには、save()メソッドを使用し、保存先のファイル名に希望するフォーマットの拡張子を指定します。

例えば、JPEG画像をPNG形式で保存する場合は、以下のようにします。

image.save('output_image.png', format='PNG')

このように、適切な拡張子を指定することで、異なるフォーマットで保存できます。

画像の読み込み速度を改善する方法は?

画像の読み込み速度を改善するための方法は以下の通りです。

  • 画像サイズの最適化: 大きな画像ファイルを使用する場合、必要なサイズにリサイズしてから読み込むことで、メモリ使用量を減らし、読み込み速度を向上させることができます。
  • サムネイルの使用: 大きな画像を直接読み込むのではなく、サムネイルを作成して使用することで、表示速度を改善できます。
  • 画像フォーマットの選択: JPEGやPNGなど、適切なフォーマットを選択することで、読み込み速度を向上させることができます。

特に、圧縮率の高いフォーマットを選ぶと、ファイルサイズが小さくなり、読み込みが速くなります。

まとめ

この記事では、PythonのPillowライブラリを使用してJPEGファイルを読み込み、さまざまな操作を行う方法について詳しく解説しました。

画像のリサイズや回転、トリミング、フォーマット変換など、実用的な技術を学ぶことで、画像処理の幅が広がります。

ぜひ、実際にコードを試してみて、画像処理のスキルを向上させてください。

当サイトはリンクフリーです。出典元を明記していただければ、ご自由に引用していただいて構いません。

関連カテゴリーから探す

  • URLをコピーしました!
目次から探す