📌

PNG画像でチャンクタイプIHDRから画像の幅と高さを取得する

に公開

これは何?

PNG画像でチャンクタイプIHDRから画像の幅と高さを取得する方法を記載します。

実現方法

PNG画像の仕様として画像の幅は17から20バイト、画像の高さは21から24バイトに保持されています。

実装

下記の画像を対象にImageMagickから画像情報を取得します。次にプログラムで取得しようと思います。

identifyコマンドを利用して画像の幅と高さを取得します。

sb_intui@saito:~/src/amazarashi/20250504$ identify kurage.png 
kurage.png PNG 788x778 788x778+0+0 8-bit sRGB 310412B 0.000u 0:00.000

画像の幅が788px、画像の高さが778pxであることが分かりました。

次にプログラムとして取得してみます。

png_ihdr = read("kurage.png")

width = Int(png_ihdr[17]) << 24 + Int(png_ihdr[18]) << 16 + Int(png_ihdr[19]) << 8 + Int(png_ihdr[20])
height = Int(png_ihdr[21]) << 24 + Int(png_ihdr[22]) << 16 + Int(png_ihdr[23]) << 8 + Int(png_ihdr[24])

println(width)
println(height)

感想

普段バイナリファイルに対して、プログラミングをしないので楽しかったです。

Discussion