Pythonのimghdrモジュールで画像形式を判定する方法
Python標準ライブラリのimghdrモジュールは、ファイルやバイトストリームに含まれる画像の種類(フォーマット)を判別するためのモジュールです。このモジュールには、画像タイプを判定する関数が1つだけ定義されています。
imghdr.what() 関数の基本構文
imghdr.what(filename, h=None)
この関数は、指定されたファイルに含まれる画像データを検査し、画像の種類を表す文字列を返します。
- filename: 判定対象の画像ファイル名を指定します。
- h: この引数が指定された場合、filenameは無視され、hで渡されたバイトストリームが検査対象となります。
imghdrが認識できる画像形式一覧
imghdrモジュールが判別可能な画像形式は以下のとおりです。
| 戻り値 | 画像フォーマット |
|---|---|
| 'rgb' | SGI ImgLib ファイル |
| 'gif' | GIF 87a および 89a ファイル |
| 'pbm' | Portable Bitmap ファイル |
| 'pgm' | Portable Graymap ファイル |
| 'ppm' | Portable Pixmap ファイル |
| 'tiff' | TIFF ファイル |
| 'rast' | Sun Raster ファイル |
| 'xbm' | X Bitmap ファイル |
| 'jpeg' | JFIFまたはExif形式のJPEGデータ |
| 'bmp' | BMP ファイル |
| 'png' | Portable Network Graphics(PNG) |
| 'webp' | WebP ファイル |
| 'exr' | OpenEXR ファイル |
使用例
実際のコード例を見てみましょう。ファイル名を渡すだけで、対応する画像形式が文字列として返されます。
>>> import imghdr
>>> imghdr.what('bass.gif')
'gif'
>>> imghdr.what('polar.png')
'png'
>>> imghdr.what('test.jpg')
'jpeg'
注意点: imghdrは非推奨
imghdrモジュールはPython 3.11で非推奨(Deprecated)となり、Python 3.13で標準ライブラリから削除されました。新しいプロジェクトでは、サードパーティ製のPillowライブラリや、python-magicなどを使って画像形式を判定することを推奨します。
from PIL import Image
with Image.open('bass.gif') as img:
print(img.format) # 'GIF'
既存コードでimghdrを使い続ける場合は、対象のPythonバージョンに注意してください。
-
OpenCVを使って画像・動画のエッジを検出するPythonプログラムの書き方
この記事では、Pythonを使って画像や動画ファイルからエッジ(輪郭)を検出する方法を解説します。エッジ検出には、コンピュータビジョン向けに設計されたオープンソースライブラリ「OpenCV」を使用します。OpenCVはもともとIntelによって開発されたライブラリで、BSDライセンスのもとで無料で利用できます。OpenCVの機能を使うには、pipでインストールを行います。インストール時にNumPyモジュールも自動的にダウンロードされるため、別途用意する必要はありません。sudo pip3 install opencv-python今回の入力には動画ファイルを使用しますが、Webカメラを接続すれ
-
Pythonで複数のファイル名を一括変更する方法【os.rename()活用】
Python3では、rename()メソッドを使うことで、ファイルやディレクトリの名前を簡単に変更できます。このメソッドは標準ライブラリのosモジュールに含まれており、追加のインストールなしですぐに利用可能です。 os.rename() の基本構文 os.rename(src, dst) 各引数の意味は以下のとおりです。 src: 名前を変更したい元のファイル(またはディレクトリ)のパス dst: 変更後の新しい名前を含むパス それでは、複数の画像ファイルが入ったフォルダを例に、一括でファイル名を変更する方法を見ていきましょう。ここでは、次のような画像フォルダを使用します。 入力(変更前の