Introduction
備忘録。
JPEG ファイルなどに含まれる EXIF には回転情報 (Orientation、IFD0 タグ 0x0112) は、画像をどのように補正すれば正しい向きになるか、というメタデータである。
この情報を .NET や .NET Framework の標準 API で取り扱えるが、Windows のバージョンによって結果が異なってしまう。
What happened?
具体的には Windows 11 24H2 の初期ビルドからビルド番号 26100.2454 未満の間で発生する。
修正プログラム KB5046740 によって ビルド番号 26100.2454 に更新される際、下記の問題が直ることが確認できる。
この問題は EXIF data misreading in WinForms VB application on Windows 11 24H2 #12338 として Issue があがっている。
Windows Imaging Component (WIC) のバグのようで、上述のようにすでに直っているのだが Close されていない。
状況を再現するソースは下記。
1 | using System; |
ExifLib という OSS と .NET の標準 API で回転情報を表示する処理を示す。
入力画像はいずれも Y 軸で反転した鏡写しのアフィン変換の回転情報が付与されているものを使っている。
Windows 11 23H2 22631.5768
再現プログラム、Explorer の Orientation 列共に問題ない結果。
Windows 11 24H2 26100.1742
手元に 24H2 の初期ビルドがなかったで中途半端なビルドだが、Explorer の Orientation 列は問題なくとも、再現プログラム側で標準 API での取得ができなくなっている。
Windows 11 24H2 26100.2454
修正プログラム KB5046740 適用後。
再現プログラム、Explorer の Orientation 列共に問題ない結果。