画像のサイズ(解像度)を見つけるPythonプログラム

JPEG(「ジェイペグ」と発音)は、Joint Photographic ExpertsGroupの略です。 これは、画像圧縮に最も広く使用されている圧縮技術の1つです。

ほとんどのファイル形式には、ファイルに関する有用な情報を含むヘッダー(最初の数バイト)があります。

たとえば、jpegヘッダーには、高さ、幅、色数(グレースケールまたはRGB)などの情報が含まれています。このプログラムでは、外部ライブラリを使用せずに、これらのヘッダーを読み取るjpeg画像の解像度を検出します。

JPEG画像の検索解像度のソースコード

def jpeg_res(filename):
   """"This function prints the resolution of the jpeg image file passed into it"""

   # open image for reading in binary mode
   with open(filename,'rb') as img_file:

       # height of image (in 2 bytes) is at 164th position
       img_file.seek(163)

       # read the 2 bytes
       a = img_file.read(2)

       # calculate height
       height = (a[0] << 8) + a[1]

       # next 2 bytes is width
       a = img_file.read(2)

       # calculate width
       width = (a[0] << 8) + a[1]

   print("The resolution of the image is",width,"x",height)

jpeg_res("img1.jpg")

出力

The resolution of the image is 280 x 280

このプログラムでは、画像をバイナリモードで開きました。 非テキストファイルは、このモードで開く必要があります。 画像の高さは164番目の位置にあり、その後に画像の幅が続きます。 どちらも2バイトの長さです。

これは、JPEGファイル交換フォーマット(JFIF)標準にのみ当てはまることに注意してください。 画像が他の標準(EXIFなど)を使用してエンコードされている場合、コードは機能しません。

ビット単位のシフト演算子<<を使用して、2バイトを数値に変換します。 最後に、解像度が表示されます。



Hope this helps!

Source link