LoginSignup
5
2

More than 1 year has passed since last update.

JPEG の解像度 DPI 値うんちく

Last updated at Posted at 2023-04-19

JPEG 画像ファイルはメタデータとして解像度(Resolution もしくは Density)値を DPI単位もしくはcm単位で保持できます。そのうんちくです。

JPEG 解像度について

スキャナで映像を取り込んだ時やスクリーンショットで JPEG 保存した時など、
対象の物理的大きさを元に算出した DPI 値を JPEG ファイルに含める事が多いです。
スキャナだと 200 や 300、スクリーンショットは 72 や 144 が代表的な値です。
ベクター画像から JPEG に変換する場合だと 37 をよく見かけます。

とりあえず JPEG のメタデータを見るツールを作ってみました。JPEGファイルをドロップしてお試し下さい。

JavaScript でローカルに動くので、サーバにアップロードしません。

JFIF 規格

JPEG の歴史的に解像度はまず JFIF marker に実装されました。
JPEG チャンクでいう APP0 です。

units (1 byte) Units for the X and Y densities.
units = 0: no units, X and Y specify the pixel aspect ratio

units = 1: X and Y are dots per inch
units = 2: X and Y are dots per cm
Xdensity (2 bytes) Horizontal pixel density
Ydensity (2 bytes) Vertical pixel density

見ての通り、横方向の解像度と縦方向の解像度を別で表現します。

units によって Xdensity, Ydensity の意味合いや単位が変わります。

units: 0 (aspect ratio)

units:0 の場合は、ピクセル(またはドット)の縦横比 aspect ratio を表す値になります。
つまり解像度(Resolution/Density)ではありません。無単位です。
具体的にはピクセルの物理的サイズが正方形の時は 1:1 が入ります。

The JFIF APP0 marker provides information which is missing from
the JPEG stream: version number, X and Y pixel density
(dots per inch or dots per cm), pixel aspect ratio
(derived from X and Y pixel density), thumbnail.

PCモニタは正方形ですが、昔のご家庭テレビや映画フィルム等は少し長方形で、これらに対応する規格のようです。

units: 1 (dots per inch, DPI)

units: 1 だと 72:72 や 200:200 といったおなじみの DPI 値を入れる事ができます。

units: 2 (dots per cm)

こちらは cm 単位です。おなじみ国際単位系 (SI) ですね。
ヤードポンド系死すべしって時に使います。

units の実情

実際には units:0 のまま DPI を入れる処理系もあったりで混乱させられます。
DPI の値は x:y の比率でもあるので一応仕様通りで、約分が面倒でそのまま入れてるのかもしれません。
具体的にいうと macOS スクリーンショットですが、これは Exif にも DPI 値を残してるので。そちらを見れば良いです。

Exif 規格

上記のように JFIF に DPI 解像度を入れない事があり。DPI が大事な時は JPEG に Exif をつけて解像度を含める事が多いです。

JPEG チャンクの APP1 です。

タグ名称 Field Name タグ番号Dec Hex タイプ カウント
画像の幅の解像度 XResolution 282 11A RATIONAL 1
画像の高さの解像度 YResolution 283 11B RATIONAL 1

ただ、Exif は JPEG ファイルサイズ削減で消される筆頭なので、

  • JFIF に aspect ratio でなく DPI で入れる
  • Exif の全部を消さず resolution だけ残す
  • Exif を strip する時に JFIF に反映してくれる神プログラムを探す。☜ ImageMagickとか!!
  • DPI を諦める、(Web 表示用なら DPI あまり関係ないですし)

といった判断に迫られるでしょう。

72 DPI

Exif の規格書には以下のように書かれています。

ImageWidth 方向の 1 ResolutionUnit あたりの画素数。画像の解像度が不明のときには
72[dpi] を記録しなければならない。 
画像の幅と高さの解像度の単位
ResolutionUnit XResolution と YResolution の単位系。
XResolution、YResolution と一緒に用いる。
画像の解像度が不明のときには 2(インチ)を記録しなければならない。

つまりインチ単位で 72 が入っている時は文字通りの 72DPI とは限らないようです。
特殊な値として覚えておくと良いかもしれません。

そもそも論

そもそも JPEG の resolution DPI値は実用上、あまり意味がないので気にしない。というのも手です。

JPEG ファイルを PDF に包まず単体でプリンタに送ってしまうとか、macOS 標準プレビューで開く時に、DPI によって表示サイズが違う。みたいな影響はありますが、それらにこだわる状況はあまりないでしょう。

でもって、こだわる時は処理フロー全体で真面目に拘りましょう。頑張って。٩( 'ω' )و

5
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
5
2