【Python】PILでfloat型の画素を持つTIFFを入出力する

ネコニウム研究所

PCを利用したモノづくりに関連する情報や超個人的なナレッジを掲載するブログ

【Python】PILでfloat型の画素を持つTIFFを入出力する

2023-5-25 |

PythonでPILを使ってfloat型の画素を持つTIFFを入出力したい!

概要

今回の記事では、PythonでPILを使ってfloat型の画素を持つTIFFを入出力するサンプルを掲載する。

float型の二次元データを楽して入出力する方法を探してて、PIL&TIFFだとめちゃ簡単に出来た!

仕様書

環境

  • Python 3.10.6

手順書

float型の画素を持つTIFFを入出力するサンプル。

256x256のfloat型で0~255のランダムなデータを生成してtifファイルで保存する。
保存したtifファイルを読み込んで元データとファイルから読み込んだデータが同一であるか確認する。

import numpy as np
from PIL import Image

width, height = 256, 256

# float型で0~255のランダムなデータを生成する
data = np.random.rand(height, width) * 255
data = data.astype(np.float64)
image = Image.fromarray(data)

# 座標(16, 16)のピクセルを取得して型の名前と値を表示する
p = image.getpixel((16,16))
print(type(p))
print(p)

# tifファイルでデータを保存する
image.save("test.tif")

# 先程保存したtifファイルを読み込む
tiff = Image.open("test.tif")

# 読み込んだデータの座標(16, 16)のピクセルを取得して型の名前と値を表示する
# 保存前のデータと同じ内容であることを確認する
p = tiff.getpixel((16,16))
print(type(p))
print(p)

このサンプルを実行するとtest.tifが出力される。Windowsのフォトで一応画像として表示できる。

まとめ(感想文)

Pythonでfloat型の二次元データを入出力するのに使えるかもね!
波形のスペクトログラムを保存するのに良いかも?!