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