[Python] tiffファイルを読み込んで表示する方法

PythonでTIFFファイルを読み込んで表示するには、Pillowライブラリを使用するのが一般的です。

まず、Pillowをインストールし、Imageモジュールを使ってTIFFファイルを読み込みます。

次に、matplotlibpyplotを使って画像を表示できます。

PillowImage.open()でTIFFファイルを読み込み、show()メソッドで表示することも可能です。

TIFFは複数ページを含むことがあるため、ページごとに処理する場合はループを使います。

この記事でわかること
  • TIFFファイルの基本的な特性
  • Pillowを使った画像の読み込み方法
  • 画像の加工や保存の手法
  • TIFFファイルの応用例と処理方法
  • 他のフォーマットへの変換方法

目次から探す

TIFFファイルとは

TIFF(Tagged Image File Format)は、高品質な画像を保存するためのファイル形式です。

主に印刷業界やデジタル画像処理で広く使用されており、可逆圧縮や非圧縮のオプションを持つため、画像の劣化を最小限に抑えることができます。

TIFFファイルは、複数のページやレイヤーを持つことができるため、スキャンした文書や高解像度の写真を扱う際に特に便利です。

また、TIFFは多くのプラットフォームやアプリケーションでサポートされており、画像の保存や共有において非常に柔軟性があります。

PythonでTIFFファイルを扱うための準備

必要なライブラリのインストール

TIFFファイルを扱うためには、主にPillowとMatplotlibという2つのライブラリを使用します。

これらのライブラリは、Pythonのパッケージ管理ツールであるpipを使って簡単にインストールできます。

以下のコマンドを実行して、必要なライブラリをインストールしてください。

pip install Pillow matplotlib

Pillowライブラリの概要

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

元々のPIL(Python Imaging Library)の後継として開発され、TIFFを含む多くの画像フォーマットの読み込み、加工、保存が可能です。

Pillowは、画像のリサイズ、回転、フィルタ適用など、さまざまな画像処理機能を提供しています。

また、TIFFファイルの複数ページの処理やメタデータの取得もサポートしています。

Matplotlibライブラリの概要

Matplotlibは、データの可視化を行うためのライブラリですが、画像の表示にも利用できます。

特に、画像をグラフとして表示する際に便利です。

Matplotlibを使用することで、TIFFファイルを簡単に表示し、他のデータと組み合わせて視覚的に分析することができます。

画像の表示だけでなく、カスタマイズやアノテーションの追加も可能です。

Pillowを使ったTIFFファイルの読み込み

Image.open()メソッドの使い方

Pillowライブラリを使用してTIFFファイルを読み込むには、Image.open()メソッドを使用します。

このメソッドは、指定したファイルパスの画像を開き、画像オブジェクトを返します。

以下は、Image.open()メソッドの基本的な使い方の例です。

from PIL import Image
# TIFFファイルを開く
image = Image.open('example.tiff')
print(image.format)  # 画像のフォーマットを表示
TIFF

TIFFファイルの基本的な読み込み方法

TIFFファイルを基本的に読み込むには、上記のImage.open()メソッドを使用します。

読み込んだ画像は、PillowのImageオブジェクトとして扱われ、さまざまな操作が可能です。

以下は、TIFFファイルを読み込んで表示する例です。

from PIL import Image
# TIFFファイルを開く
image = Image.open('example.tiff')
# 画像を表示する
image.show()

複数ページのTIFFファイルの処理方法

TIFFファイルは、複数のページを持つことができます。

Pillowでは、Imageオブジェクトのseek()メソッドを使用して、特定のページにアクセスできます。

以下は、複数ページのTIFFファイルを処理する例です。

from PIL import Image
# 複数ページのTIFFファイルを開く
image = Image.open('multi_page_example.tiff')
# ページ数を取得
num_pages = image.n_frames
print(f'ページ数: {num_pages}')
# 各ページを表示
for i in range(num_pages):
    image.seek(i)
    image.show()
ページ数: 3

TIFFファイルのメタデータの取得方法

TIFFファイルには、画像に関するメタデータが含まれていることがあります。

Pillowを使用して、これらのメタデータを取得することができます。

以下は、TIFFファイルのメタデータを取得する例です。

from PIL import Image
# TIFFファイルを開く
image = Image.open('example.tiff')
# メタデータを取得
metadata = image.info
print(metadata)
{'dpi': (300, 300), 'compression': 'tiff_lzw'}

このように、Pillowを使用することで、TIFFファイルの読み込みやメタデータの取得が簡単に行えます。

TIFFファイルの表示方法

Pillowのshow()メソッドを使った表示

Pillowライブラリには、画像を簡単に表示するためのshow()メソッドがあります。

このメソッドを使用すると、デフォルトの画像ビューアでTIFFファイルを表示できます。

以下は、show()メソッドを使った表示の例です。

from PIL import Image
# TIFFファイルを開く
image = Image.open('example.tiff')
# 画像を表示する
image.show()

このコードを実行すると、指定したTIFFファイルがデフォルトの画像ビューアで表示されます。

Matplotlibを使った表示方法

Matplotlibを使用すると、画像をグラフとして表示することができます。

特に、データの可視化と組み合わせて使用する際に便利です。

以下は、Matplotlibを使ってTIFFファイルを表示する例です。

import matplotlib.pyplot as plt
from PIL import Image
# TIFFファイルを開く
image = Image.open('example.tiff')
# 画像を表示する
plt.imshow(image)
plt.axis('off')  # 軸を非表示にする
plt.show()

このコードを実行すると、MatplotlibのウィンドウにTIFFファイルが表示されます。

OpenCVを使った表示方法

OpenCVも画像処理に広く使用されるライブラリで、TIFFファイルを表示することができます。

OpenCVを使用する場合、まずPillowで画像を読み込み、NumPy配列に変換する必要があります。

以下は、OpenCVを使った表示の例です。

import cv2
from PIL import Image
import numpy as np
# TIFFファイルを開く
image = Image.open('example.tiff')
# Pillowの画像をNumPy配列に変換
image_np = np.array(image)
# 画像を表示する
cv2.imshow('TIFF Image', image_np)
cv2.waitKey(0)  # 任意のキーが押されるまで待機
cv2.destroyAllWindows()  # ウィンドウを閉じる

このコードを実行すると、OpenCVのウィンドウにTIFFファイルが表示されます。

表示されたウィンドウは、任意のキーを押すことで閉じることができます。

TIFFファイルの加工と保存

Pillowを使った画像の加工

Pillowライブラリを使用すると、TIFFファイルを簡単に加工することができます。

例えば、画像のフィルタを適用したり、色を変更したりすることが可能です。

以下は、Pillowを使って画像にフィルタを適用する例です。

from PIL import Image, ImageFilter
# TIFFファイルを開く
image = Image.open('example.tiff')
# 画像にぼかしフィルタを適用
blurred_image = image.filter(ImageFilter.BLUR)
# 加工後の画像を表示
blurred_image.show()

このコードを実行すると、元の画像にぼかし効果が適用された画像が表示されます。

画像のリサイズや回転

Pillowを使用すると、画像のリサイズや回転も簡単に行えます。

以下は、画像をリサイズし、90度回転させる例です。

from PIL import Image
# TIFFファイルを開く
image = Image.open('example.tiff')
# 画像をリサイズ(幅300px、高さ200px)
resized_image = image.resize((300, 200))
# 画像を90度回転
rotated_image = resized_image.rotate(90)
# 加工後の画像を表示
rotated_image.show()

このコードを実行すると、リサイズされ、90度回転した画像が表示されます。

画像のフォーマット変換

Pillowを使用して、TIFFファイルを他の画像フォーマットに変換することもできます。

以下は、TIFFファイルをJPEGフォーマットに変換する例です。

from PIL import Image
# TIFFファイルを開く
image = Image.open('example.tiff')
# JPEGフォーマットに変換して保存
image.convert('RGB').save('converted_image.jpg', 'JPEG')

このコードを実行すると、TIFFファイルがJPEGフォーマットに変換され、converted_image.jpgとして保存されます。

加工後のTIFFファイルの保存方法

加工したTIFFファイルを保存するには、save()メソッドを使用します。

以下は、加工後のTIFFファイルを保存する例です。

from PIL import Image
# TIFFファイルを開く
image = Image.open('example.tiff')
# 画像をリサイズ
resized_image = image.resize((300, 200))
# 加工後の画像をTIFFフォーマットで保存
resized_image.save('resized_image.tiff', 'TIFF')

このコードを実行すると、リサイズされた画像が新しいTIFFファイルとして保存されます。

これにより、元の画像を保持しつつ、加工した画像を別のファイルとして保存することができます。

TIFFファイルの応用例

TIFFファイルの一部を切り出す方法

Pillowを使用すると、TIFFファイルの特定の部分を切り出すことができます。

crop()メソッドを使って、画像の一部を指定した範囲で切り取ることが可能です。

以下は、TIFFファイルの一部を切り出す例です。

from PIL import Image
# TIFFファイルを開く
image = Image.open('example.tiff')
# 切り出す範囲を指定(左、上、右、下)
crop_area = (100, 100, 400, 400)
cropped_image = image.crop(crop_area)
# 切り出した画像を表示
cropped_image.show()

このコードを実行すると、指定した範囲の画像が切り出されて表示されます。

TIFFファイルの圧縮と解凍

TIFFファイルは、圧縮オプションを持つため、ファイルサイズを小さくすることができます。

Pillowを使用して、TIFFファイルを圧縮して保存することができます。

以下は、LZW圧縮を使用してTIFFファイルを保存する例です。

from PIL import Image
# TIFFファイルを開く
image = Image.open('example.tiff')
# LZW圧縮を使用して保存
image.save('compressed_image.tiff', 'TIFF', compression='tiff_lzw')

このコードを実行すると、LZW圧縮されたTIFFファイルが保存されます。

圧縮されたファイルは、元の画像を保持しつつ、ファイルサイズを小さくします。

TIFFファイルのバッチ処理

複数のTIFFファイルを一度に処理するバッチ処理も可能です。

以下は、指定したフォルダ内のすべてのTIFFファイルをリサイズして保存する例です。

import os
from PIL import Image
# TIFFファイルが保存されているフォルダ
input_folder = 'input_tiff_files'
output_folder = 'output_tiff_files'
# フォルダ内のすべてのTIFFファイルを処理
for filename in os.listdir(input_folder):
    if filename.endswith('.tiff'):
        # TIFFファイルを開く
        image = Image.open(os.path.join(input_folder, filename))
        
        # 画像をリサイズ
        resized_image = image.resize((300, 200))
        
        # 加工後の画像を保存
        resized_image.save(os.path.join(output_folder, filename))

このコードを実行すると、指定したフォルダ内のすべてのTIFFファイルがリサイズされ、別のフォルダに保存されます。

TIFFファイルをPDFに変換する方法

Pillowを使用して、TIFFファイルをPDFフォーマットに変換することもできます。

以下は、TIFFファイルをPDFに変換して保存する例です。

from PIL import Image
# TIFFファイルを開く
image = Image.open('example.tiff')
# PDFに変換して保存
image.save('converted_image.pdf', 'PDF')

このコードを実行すると、指定したTIFFファイルがPDFフォーマットに変換され、converted_image.pdfとして保存されます。

これにより、TIFFファイルを簡単にPDF形式で共有することができます。

よくある質問

TIFFファイルが読み込めない場合の対処法は?

TIFFファイルが読み込めない場合、以下の点を確認してください。

  • ファイルパスの確認: 指定したファイルパスが正しいか確認します。

ファイル名や拡張子が間違っていないかもチェックしてください。

  • ファイルの破損: TIFFファイルが破損している可能性があります。

他の画像ビューアで開いてみて、正常に表示されるか確認します。

  • ライブラリのインストール: Pillowライブラリが正しくインストールされているか確認します。

必要に応じて再インストールしてください。

  • TIFFのバージョン: 一部のTIFFファイルは特定の圧縮方式やバージョンに依存している場合があります。

異なるTIFFファイルを試してみてください。

複数ページのTIFFファイルを一括で処理するには?

複数ページのTIFFファイルを一括で処理するには、Imageオブジェクトのn_frames属性を使用してページ数を取得し、seek()メソッドで各ページにアクセスします。

以下は、すべてのページをリサイズして保存する例です。

  1. TIFFファイルを開く。
  2. ページ数を取得する。
  3. 各ページを処理する。
from PIL import Image
# TIFFファイルを開く
image = Image.open('multi_page_example.tiff')
# ページ数を取得
num_pages = image.n_frames
# 各ページを処理
for i in range(num_pages):
    image.seek(i)  # ページを指定
    resized_image = image.resize((300, 200))  # リサイズ
    resized_image.save(f'page_{i + 1}.tiff', 'TIFF')  # 保存

TIFFファイルを他の画像フォーマットに変換する方法は?

TIFFファイルを他の画像フォーマットに変換するには、Pillowのsave()メソッドを使用します。

以下は、TIFFファイルをJPEGフォーマットに変換する方法の例です。

from PIL import Image
# TIFFファイルを開く
image = Image.open('example.tiff')
# JPEGフォーマットに変換して保存
image.convert('RGB').save('converted_image.jpg', 'JPEG')

このコードを実行すると、TIFFファイルがJPEGフォーマットに変換され、指定したファイル名で保存されます。

必要に応じて、他のフォーマット(PNG、BMPなど)にも同様の方法で変換できます。

まとめ

この記事では、Pythonを使用してTIFFファイルを読み込み、表示、加工、保存する方法について詳しく解説しました。

また、TIFFファイルの特性や、PillowやMatplotlib、OpenCVといったライブラリを活用した具体的な操作例も紹介しました。

これらの知識を活用することで、TIFFファイルを効果的に扱い、さまざまな画像処理のニーズに応じた応用が可能になります。

ぜひ、実際にコードを試してみて、TIFFファイルの処理に挑戦してみてください。

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