主にプログラミングに関して。Python, .NET Framework(C#), JavaScript, その他いくらか。
記事にあるサンプルやコードは要検証。使用に際しては責任を負いかねます

Exifのエンディアンタイプに関して - PythonでExifを読み書きするモジュールを作ったときのこと

                
tags: python
 GoogleAppEngineでも使えるようにとExifを読み書きしたりいじれるPythonモジュールを書いた。
http://elicon.blog57.fc2.com/blog-entry-399.html

モジュールの関数”load”と”dump”に関して共通
・0th IFD、Exif IFD、GPS IFDの三つに対応

”load”
リトルエンディアン、ビッグエンディアン両方への対応

”dump”
ビッグエンディアン書き込みのみ

 JPEG自体がビッグエンディアンなので、最初はビッグエンディアンでExifを読めるように作った。そのあとでデジカメを出している有名メーカーのサイトへ行って、デジカメの撮影サンプルを取ってきてチェックしてみたら意外にもExifだけリトルエンディアンで書かれているメーカーの多いこと。モジュールをリトルエンディアンのExifでも読めるように書き換えた。

 参考までに主なデジカメメーカーをExifのエンディアンタイプで分ける。実機を持たずに公式サイトから適当に拾ってきたサンプル一枚で判断した。中のExif書き込みをするソフト部分はメーカー内で使いまわされてるだろうしモデルごとにサンプルを取ってくる必要はないだろう。だけど修正など加わっていて、実機とは違うエンディアンタイプになっているかもしれない。
ビッグエンディアン: Casio, Ricoh
リトルエンディアン:Sony, Canon, Olympus, Panasonic, Sigma
1409221607465.jpg


 リトルエンディアンのほうが断然多い・・・・・・。JPEG本体はビッグエンディアンなのにExifだけリトルエンディアンにしたのはどういう経緯なんだろう。ちなみに、
・Windows7でファイルプロパティからExifをいじってもエンディアンタイプの変更はなし
・同じくWindows7でExifのないファイルにファイルプロパティから新しく情報を付加するとビッグエンディアンで付加
・AdobeのPhotoshopでちょっとだけ画像をいじって上書きしてもエンディアンタイプの変更はなし
・同じくPhotoshopからJPEGを新しく作るとビッグエンディアンでExifが付加
という結果も。もう対応したからいいんだけどどうせならどっちかに統合されて欲しいのに、有力なソフトメーカーと有力なデジカメメーカーで逆を向いているような状況か。
スポンサーサイト



プロフィール

h

Author:h

最新記事
リンク
作ったものなど
月別アーカイブ
カテゴリ
タグリスト

検索フォーム
Amazon