Python
 Computer >> コンピューター >  >> プログラミング >> Python

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バージョンに注意してください。

  1. OpenCVを使って画像・動画のエッジを検出するPythonプログラムの書き方

    この記事では、Pythonを使って画像や動画ファイルからエッジ(輪郭)を検出する方法を解説します。エッジ検出には、コンピュータビジョン向けに設計されたオープンソースライブラリ「OpenCV」を使用します。OpenCVはもともとIntelによって開発されたライブラリで、BSDライセンスのもとで無料で利用できます。OpenCVの機能を使うには、pipでインストールを行います。インストール時にNumPyモジュールも自動的にダウンロードされるため、別途用意する必要はありません。sudo pip3 install opencv-python今回の入力には動画ファイルを使用しますが、Webカメラを接続すれ

  2. Pythonで複数のファイル名を一括変更する方法【os.rename()活用】

    Python3では、rename()メソッドを使うことで、ファイルやディレクトリの名前を簡単に変更できます。このメソッドは標準ライブラリのosモジュールに含まれており、追加のインストールなしですぐに利用可能です。 os.rename() の基本構文 os.rename(src, dst) 各引数の意味は以下のとおりです。 src: 名前を変更したい元のファイル(またはディレクトリ)のパス dst: 変更後の新しい名前を含むパス それでは、複数の画像ファイルが入ったフォルダを例に、一括でファイル名を変更する方法を見ていきましょう。ここでは、次のような画像フォルダを使用します。 入力(変更前の