« 2015年8月 | トップページ | 2015年10月 »

SIGMA Exif Reader をいじっている 2015/09/29

誰にも喜ばれないのは判っているのだけど、SD9 の X3F ファイルの解析を始めた。データの読み出しそのものはさほど大変ではないので後回しにして、どうやってもちゃんと表示されなかったサムネイルを表示させるのに2日間を費やした。

初期の X3F ファイルに含まれているサムネイル用の画像は非圧縮の24ビットなのだけど、通常のビットマップ(.BMP)ファイルとは異なる形式で各色のデータが記録されているため、かなり苦労した。画像ファイルの表示ルーチンを1から書かなくてはいけないかも知れないと思ったが、かなりトリッキーな方法で標準の BMP ファイルフォーマットをメモリ上に構築して、何とか表示させることができた。

ただ、その際に今まで書いた部分に影響が出て、他の X3F ファイルのデータが正しく読み出せなくなってしまい、そのバグを修正するのに丸一日掛かってしまった。

明日中には念願だった全ての X3F ファイルへの対応が完了すると思う。公開はその後になる。

おやすみなさい。

| | コメント (0)

SIGMA Exif Reader 全面改訂完了 Ver.2.0 2015/09/27

このバージョンでとりあえず一区切り。まだ、おかしなところや未完成な部分があるのだけど古いデータや変造したファイル等を与えない限りは大丈夫だと思う。

SIGMA Exif Reader ダウンロードのページへ<

| | コメント (0)

スクロールが・・・ 2015/09/26

以前の Visual BASIC ではリストボックスをスクロールした際に、それと同期して別のリストボックスもスクロールさせることが出来たのに、最新の VB.net ではそれが出来ない事が判明。

現時点では、長いリストをスクロールさせると、右側だけがスクロールして、左側はそのまんま。悩んでおります。カスタムコントロールを作るしかないのかしら・・・。

| | コメント (0)

忙しいのにプログラミング・・・。(^^; 2015/09/26

26 日ではあるけど、午前 2 時。SIGMA Exif Reader の多言語化が完了。まだ一部、不完全ではあるけど、何とか止まらずに動く状態にはなった(と思う)。

SIGMA Exif Reader ダウンロードのページへ

| | コメント (0)

浦安男声合唱団の定期演奏会を撮影 2015/09/23

私の高校写真部の先輩が団長なので、頼まれたらイヤとは言えない。楽しんで撮影させて頂いた。800 カットほど撮ったので、その現像と整理で超多忙状態。

SIGMA Exif Reader は多言語化を進めて行くウチにフランス語やイタリア語だと項目名の中にかなり長いものがあって、表示がガタガタになる事が判明。項目名の表示とデータの表示を今はタブで分けているのだけど、データ部分表示用のリストボックスを隣に作って、キッチリ分ける様に仕様を変更。Exif の内容を表示する部分を全面的に書き直し。多分、今月中には終わると思うけど、それまでアップデートは無し。

そんなわけで、本日はこれまで。

| | コメント (0)

子育てしながらプログラムに手を入れる(予定) 2015/09/22

ヨメさんがパートに行く前の午前中。ここで一度ブログの記事を更新。

SIGMA Exif Reader の多言語化を進めて行くウチに今ひとつの部分が気になってきた。ファイル自体の情報に作成日時と更新日時を加えたいとか、撮影情報は可能な限り普遍的な Exif 情報の部分を表示すべきとか、メーカーノートから読み出した情報と一般的な Exif 情報は区別すべきとか・・・。

多言語化を進めながらそのあたりも手を入れて行こうと思い、プログラム内部でゴッチャになっていた通常の Exif 情報とメーカーノートの情報を明確に区別出来るようにプロパティー名を変更中。結構手間取るが、将来的な展開を考えると今のウチにやっておかないと間違えの元になる。

| | コメント (0)

ホテルで食事 2015/09/21

今日は「はな」が大好きなシェラトングランデトーキョーベイホテルに出向いて、一家総出でランチ。ビュッフェスタイルなので食べ過ぎた。(^^;

撮った写真が溜まっているのに、現像もせずに SIGMA Exif Reader に手を入れている。まだ、下のリストの部分が中途半端だけど、チョットした変更を加えたので、とりあえずアップ。多言語化は予想以上に手間が掛かっていて、この連休中に終わるかどうか難しい状況になってきた。

誰かにせかされているわけでは無いのだけど、自分自身のモチベーションが下がらないウチに終わらせたいものである。

SIGMA Exif Reader ダウンロードのページへ

| | コメント (0)

子育ての合間のプログラミング 2015/09/20

SPP では表示されない項目を多国語に対応するのは結構骨が折れる。たった一行を表示するためのプログラムに費やした時間が4時間。プログラムの行数は空行を除いて 287 行。我ながら呆れてしまう。しかも、表示される外国語が正しいのかどうかの自信がない。

一応、出来たところまで、アップさせて頂く。「解像度」までが多言語化されている。表示にズレがあるのはそのためである。このズレは最終的には無くなるので、ご心配無きよう。

SIGMA Exif Reader ダウンロードのページへ


この下に、そのたった一行を表示するためだけのプログラムを掲載させて頂く。

Exif 情報に含まれる「画像方向」、つまり、元の画像の方向に戻すにはどういった回転や処理が必要なのかの情報を表示する部分である。サムネイルもこの情報に基づいて、縦横を回転して表示している。

チェックして頂きたいのは英語と日本語以外のフランス語、ドイツ語、スペイン語、イタリア語、ロシア語、韓国語、中国語(簡体)、中国語(繁体)の表現に間違いが無いかどうか。いずれかの国語を理解しておられる方がおられたら、ぜひお願いしたい。おそらく間違えている部分や適切で無い表現になっている部分があると思うので、ご指摘を頂ければ誠にありがたい。

「鏡像(左右や上下が反転している画像)」は Photoshop 等で画像を編集しない限りあり得ないのだけど、将来的には Photoshop 等で編集された画像であっても、その中に含まれる情報を全て表示したいと考えているので、敢えて入れてある。とにかく、上に書いてある外国語の知識をお持ちの方で、お暇な方がおられたら、目を通して頂けるとありがたい。

なお、プログラムの読みやすさを考慮して、空行はそのまま残してある。実際のプログラムをご覧になったことがない方にはチョット物珍しいモノかも知れない。Visual BASIC.net と言うプログラミング言語で書いてある。各国語を意味する2文字("en","ja","de"...)以外の "(ダブルクォーテーション)で挟まれている部分が "画面に表示される文字列" である。外国語の特殊な文字がちゃんと表示されるかどうか不安であるが、やってみよう。

この下の行はプログラムだけで、記事は無い。なので、興味のない方はお読み頂かない方が良い。睡眠薬代わりにはなるかも知れないが・・・。(^^;


' 項目名を表示

Select Case sSPPLang

Case "en" ' 英語

DispString = "Image Orientation:".PadRight(iPadSpace) & Chr(9)

Case "ja" ' 日本語

DispString = "画像方向:".PadRight(iPadSpace) & Chr(9)

Case "fr" ' フランス語

DispString = "Image Orientation:".PadRight(iPadSpace) & Chr(9)

Case "de" ' ドイツ語

DispString = "Bild Ausrichtung :".PadRight(iPadSpace) & Chr(9)

Case "es" ' スペイン語

DispString = "Imagen Orientación:".PadRight(iPadSpace) & Chr(9)

Case "it" ' イタリア語

DispString = "Immagine orientamento:".PadRight(iPadSpace) & Chr(9)

Case "ru" ' ロシア語

DispString = "изображение ориентация:".PadRight(iPadSpace) & Chr(9)

Case "ko" ' 韓国語

DispString = "이미지 방향:".PadRight(iPadSpace) & Chr(9)

Case "zh" ' 中国語(簡体)

DispString = "像方向:".PadRight(iPadSpace) & Chr(9)

Case "zh-tw" ' 中国語(繁体)

DispString = "像方向:".PadRight(iPadSpace) & Chr(9)

Case Else ' SPP がインストールされていない場合

If sUICulture = "ja" Then ' OS の国情報が「日本」

DispString = "画像方向:".PadRight(iPadSpace) & Chr(9)

Else ' それ以外の国(英語)

DispString = "Image Orientation:".PadRight(iPadSpace) & Chr(9)

End If

End Select

' Exif Tag Orientation の値を取得

Ix = Val(xTag(ExifTagEnum.Orientation))

Select Case sSPPLang


Case "en"

Select Case Ix

Case 1

DispString = DispString & "Horizontal (normal)"

Case 2

DispString = DispString & "Mirror horizontal"

Case 3

DispString = DispString & "Rotate 180"

Case 4

DispString = DispString & "Mirror vertical"

Case 5

DispString = DispString & "Mirror horizontal and rotate 270 CW"

Case 6

DispString = DispString & "Rotate 90 CW"

Case 7

DispString = DispString & "Mirror horizontal and rotate 90 CW"

Case 8

DispString = DispString & "Rotate 270 CW"

Case Else

DispString = DispString & "unknown"

End Select


Case "ja"

Select Case Ix

Case 1

DispString = DispString & "水平(そのまま)"

Case 2

DispString = DispString & "天地鏡像"

Case 3

DispString = DispString & "180°回転"

Case 4

DispString = DispString & "左右鏡像"

Case 5

DispString = DispString & "天地鏡像、右周りに270°回転"

Case 6

DispString = DispString & "右周りに90°回転"

Case 7

DispString = DispString & "天地鏡像、右周りに90°回転"

Case 8

DispString = DispString & "右周りに270°回転"

Case Else

DispString = DispString & "不明"

End Select


Case "fr"

Select Case Ix

Case 1

DispString = DispString & "Horizontal(normal)"

Case 2

DispString = DispString & "Mirror horizontal"

Case 3

DispString = DispString & "Tourner 180°"

Case 4

DispString = DispString & "Mirror vertical"

Case 5

DispString = DispString & "Mirror horizontal et rotate 270°sens horaire"

Case 6

DispString = DispString & "Rotate 90°sens horaire"

Case 7

DispString = DispString & "Mirror horizontal et rotate 90°sens horaire"

Case 8

DispString = DispString & "Rotate 270°sens horaire"

Case Else

DispString = DispString & "inconnu"

End Select


Case "de"

Select Case Ix

Case 1

DispString = DispString & "Horizontal(normal)"

Case 2

DispString = DispString & "Spiegel horizontal"

Case 3

DispString = DispString & "Um 180° drehen"

Case 4

DispString = DispString & "Spiegel senkrecht"

Case 5

DispString = DispString & "Spiegel horizontal und Rotate 270 Uhrzeigersinn"

Case 6

DispString = DispString & "Um 90° drehen im Uhrzeigersinn"

Case 7

DispString = DispString & "Spiegel horizontal und Rotate 90 Uhrzeigersinn"

Case 8

DispString = DispString & "Um 270° drehen im Uhrzeigersinn"

Case Else

DispString = DispString & "unbekannt"

End Select


Case "es"

Select Case Ix

Case 1

DispString = DispString & "horizontal (normal)"

Case 2

DispString = DispString & "Espejo horizontal"

Case 3

DispString = DispString & "Rotación 180°"

Case 4

DispString = DispString & "Espejo vertical"

Case 5

DispString = DispString & "Espejo horizontal y dextrorso rotación 270°"

Case 6

DispString = DispString & "Dextrorso rotación 90°"

Case 7

DispString = DispString & "Espejo horizontal y Dextrorso rotación 90°"

Case 8

DispString = DispString & "Dextrorso rotación 270°"

Case Else

DispString = DispString & " desconocido"

End Select


Case "it"

Select Case Ix

Case 1

DispString = DispString & "Orizzontale (normale)"

Case 2

DispString = DispString & "Specchio orizzontale"

Case 3

DispString = DispString & "Rotazione 180°"

Case 4

DispString = DispString & "Specchio vertical"

Case 5

DispString = DispString & "Specchio orizzontale e senso orario 270°"

Case 6

DispString = DispString & "Senso orario 90°"

Case 7

DispString = DispString & "Specchio orizzontale e senso orario 90°"

Case 8

DispString = DispString & "Senso orario 270°"

Case Else

DispString = DispString & "sconosciuto"

End Select


Case "ru"

Select Case Ix

Case 1

DispString = DispString & "горизонтальный (нормальный)"

Case 2

DispString = DispString & "зеркало горизонтальный"

Case 3

DispString = DispString & "вращать 180°"

Case 4

DispString = DispString & "зеркало вертикальный"

Case 5

DispString = DispString & "зеркало горизонтальный и вращать 270°по часовой стрелке"

Case 6

DispString = DispString & "вращать 90° по часовой стрелке"

Case 7

DispString = DispString & "зеркало горизонтальный и вращать 90°по часовой стрелке"

Case 8

DispString = DispString & "вращать 90° по часовой стрелке"

Case Else

DispString = DispString & "неизвестный"

End Select


Case "ko"

Select Case Ix

Case 1

DispString = DispString & "수평(그대로)"

Case 2

DispString = DispString & "상하경상"

Case 3

DispString = DispString & "180도 회전"

Case 4

DispString = DispString & "좌우 반전"

Case 5

DispString = DispString & "상하경상 시계방향 270도 회전"

Case 6

DispString = DispString & "시계방향 90도 회전"

Case 7

DispString = DispString & "상하경상 시계방향 90도 회전"

Case 8

DispString = DispString & "시계방향 270도 회전"

Case Else

DispString = DispString & "알 수없는"

End Select


Case "zh"

Select Case Ix

Case 1

DispString = DispString & "水平(原样)"

Case 2

DispString = DispString & "上下翻转"

Case 3

DispString = DispString & "180度回转"

Case 4

DispString = DispString & "左右翻转"

Case 5

DispString = DispString & "上下翻转,270度顺时针"

Case 6

DispString = DispString & "90度顺时针"

Case 7

DispString = DispString & "上下翻转,90度顺时针"

Case 8

DispString = DispString & "270度顺时针"

Case Else

DispString = DispString & "不知"

End Select


Case "zh-tw"

Select Case Ix

Case 1

DispString = DispString & "水平(原样)"

Case 2

DispString = DispString & "上下翻轉"

Case 3

DispString = DispString & "180度迴轉"

Case 4

DispString = DispString & "左右翻轉"

Case 5

DispString = DispString & "上下翻轉,270度順時針"

Case 6

DispString = DispString & "90度順時針"

Case 7

DispString = DispString & "上下翻轉,90度順時針"

Case 8

DispString = DispString & "270度順時針"

Case Else

DispString = DispString & "不知"

End Select


Case Else


If sUICulture = "ja" Then

Select Case Ix

Case 1

DispString = DispString & "水平(そのまま)"

Case 2

DispString = DispString & "天地鏡像"

Case 3

DispString = DispString & "180°回転"

Case 4

DispString = DispString & "左右鏡像"

Case 5

DispString = DispString & "天地鏡像、右周りに270°回転"

Case 6

DispString = DispString & "右周りに90°回転"

Case 7

DispString = DispString & "天地鏡像、右周りに90°回転"

Case 8

DispString = DispString & "右周りに270°回転"

Case Else

DispString = DispString & "不明"

End Select

Else

Select Case Ix

Case 1

DispString = DispString & "Horizontal (normal)"

Case 2

DispString = DispString & "Mirror horizontal"

Case 3

DispString = DispString & "Rotate 180"

Case 4

DispString = DispString & "Mirror vertical"

Case 5

DispString = DispString & "Mirror horizontal and rotate 270 CW"

Case 6

DispString = DispString & "Rotate 90 CW"

Case 7

DispString = DispString & "Mirror horizontal and rotate 90 CW"

Case 8

DispString = DispString & "Rotate 270 CW"

Case Else

DispString = DispString & "unknown"

End Select

End If

End Select

ListBox1.Items.Add(DispString)

| | コメント (0)

SIGMA Exif Reader の多言語対応 2015/09/19

SIGMA Exif Reader を作り始めた当初から、このアプリを多言語に対応させる事を考ていた。とりあえず最近のファイルに関してはまともに動くようになったし、気になっていた点も直した。と言う事で多言語に対応してみようと挑戦している。もちろん、私一人の能力ではどうしようもないので、SPP に仕込まれている多言語対応用のファイルを利用させて頂く。

通常の方法でインストールされた SPP 6 のフォルダは C:¥Program Files¥SIGMA¥SIGMA Photo Pro 6 である。ひねくれて他のフォルダにインストールしている方もおられるとは思うけど、SIGMA Exif Reader はレジストリを探査して SIGMA Phto Pro がインストールされているフォルダを探し出し、そこにある String.txt ファイルを読み込む。

もちろん全ての SIGMA Exif Reader のユーザーが SPP をインストールしてあるとは限らないので、その場合には Windows で使われている言語を調べる。ただし、調べるのは日本語かそうでないかだけである。SPP をインストールしてある場合には8ヶ国語に対応出来るのだけど、SPP がインストールされていない場合には日本語と英語だけの対応となる。

ただし、言語の選択は自動になっているため、多国語版をご覧になりたい方は SPP を一度アンインストールして、再インストール時に指定出来る言語の選択で、ご覧になりたい言語を選択してインストールして欲しい。

SPP がインストールされていない状態では、OS の国情報を拾って、日本語かどうかを確認し、そうであれば日本語で、それ以外の言語であれば英語のアプリケーションとなる。

と書いたのは良いけど、プログラミングは始めたばかり。とりあえずここに書いた部分は出来て、メニューは対応済み。下の表示項目も上から4つは、他言語版。後は各項目の表記をインストールされている SPP の言語に合わせて表示すると言うかなり面倒な部分が残っている。

連休明けまでには終わると思うけど、どうなりますやら。

それ以外にも連続して表示するファイルの種類を選択可能にしたり、イロイロと手を入れたので、アップさせて頂く。「カメラメーカー」から下の項目はまだ日本語のみ。(^^;

SIGMA Exif Reader ダウンロードのページへ

| | コメント (0)

SEIN 6 号が来た 2015/09/18

いつも素敵な内容で、とてもおしゃれな広報誌らしからぬ広報誌である。同封されているセイケトミオ氏の SIGMA dp3 Quattro で撮影された写真も素晴らしい。

SIGMA Exif Reader をせっせとプログラムしている時間があるのなら、一枚でも多くの写真を撮るべきかも知れない。が、私にとってプログラミングは写真を撮るのと同じくらい楽しい作業なので、一段落付くまでは続けたいと思っている。現在は多言語対応のテスト中。


SIGMA dp2 Quattro と SIGMA dp3 Qauttro のファームウェアがアップデートされた。

dp2 Quattro のファームウェアアップデートには

・AFの合焦精度を向上させました。
・AF補助光が発光するような状況のもとでAFとMFのモード切り替えを繰り返すと、まれにカメラがフリーズしてしまう現象を修正いたしました。

とアナウンスされており、dp3 Quattro の方にはさらに

・MF時におけるフォーカスリング制御を改善し、ピント調整が行いやすくなりました。

との記述がある。dp3 Quattro のマニュアルフォーカシングがムラのあるレスポンスだったので、これで少しは改善されるのではないかと期待している。

さて、明日からはシルバーウィーク。年寄りの日とお彼岸が重なって五連休。のんびり過ごすとしよう。

| | コメント (0)

システムディスクをリニューアル 2015/09/17

我が家の Windows デスクトップマシンの C: ドライブは4年と7ヶ月前に購入した Intel の SSD で 80GByte の容量があった。残りが 12G 程になってしまったのと少し調子が悪くなって来たような兆候が見られたため、本日でその役目を終わらせた。残り 12G では Windows のバージョンアップも出来ない。

SanDisk の新しい SSD が安くて良さそうだったので、ポイントが貯まっていたヨドバシから購入。SanDisk SSD PLUS 240GByte で、そこそこ速い。Windwos 8.1 が完全に起動するまでに1分 30 秒ほど掛かっていたのが1分 10 秒ほどになり、Photoshop や SPP 等のアプリケーションの起動が体感できるほど速くなった。

購入した SSD のユーザー登録をして、クローンソフトをダウンロードし、そのソフトを使ってシステムディスクをコピーしたので、何の苦労も、トラブルもなく30分ほどでシステムディスクの入れ替えは終了してしまい、今こうして入れ替える前と全く同様に何の問題も無く使えている。

ただ、無料で使えるクローン作成ソフトだけに、1回しか使うことができないようだ。まぁ、二度とやらない作業なので、それでも全く問題は無い。

空きもたっぷり出来たので、この後 Windows を 8.1 から 10 にバージョンアップする予定。とりあえずここで一旦筆を置いて、 Windows のバージョンアップが完了したら、この先を続ける。万が一失敗しても、ついさっきまで使っていたシステム入りの SSD があるので何の心配も無い。

現在午後6時丁度。

・・・・・ Windwos 10 にバージョンアップ中 ・・・・・

Windwos 10 へのバージョンアップ完了。現在 19:45。意外と長くかかった。特に「インストールの準備をしています」の状態で異常に長い時間止まっていたのが気になる。が、とりあえず無事に起動して、こうして文章を打てている。


なんとまぁ、すべてのアプリケーションの窓枠がわずか1ピクセルになってしまった。アイコンも立体的でなくなり、あっさりとしたイメージ。ソフトウェアの機能が損なわれたわけではないので、良しとしよう。

ぎゃ、いま気が付いたけど、日本語入力が Microsoft IME になっている。ATOK はどこへ行ったのだ・・・。あらら・・・。デスクトップアプリでのみ使えますってか。ほとんどのかな漢字変換はデスクトップアプリでしか使わないし、Windows キー + Space で切り替えが出来るのだから、どうしても ATOK が使えない状況の時だけ SM IME を使うようにしよう。

さて、今日はこれまで・・・。

| | コメント (0)

チョット一休み 2015/09/16

データが書かれている場所と内容をインデックスしてくれるのが DAT(データアロケーションテーブル)なのだけど、そのテーブルに従ってデータを読み出すことが出来ない。どう考えても例外が発生してしまう構造になっているので、ここらで一休みすることにした。

X3F ファイルの完全制覇は、今月いっぱい掛かりそうである。と言う訳で、今日のアップデートは「無し」。

しかし、フト考えたのだけど、シグマ製デジタルカメラの全機種で撮影された X3F ファイルをいつでも参照できる状態で保存してあり、SPP の全バージョンのインストールプログラムも保存してあるユーザーって、あまり多くはないだろう。さらに、私がプログラマーだったと言う事で、シグマ用の何かのプログラムを書くことになったのは自然な成り行きだったと思った。

多くの方々に喜んで頂いているわけではないけど、私自身も楽しんでプログラムしているので、お付き合い頂ければありがたい。


先日、「はな」の中学校の運動会で撮影したユー君。

『お茶で休憩中』  4,357,393
SIGMA dp2 Quattro @f:5.0 1/60Sec. ISO100
絞り優先AE、AF、ホワイトバランス:オート(色残し)、カラーモード:ポートレート

| | コメント (0)

X3F Ver.2.3 の対応が完了したと思ったら・・・ 2015/09/15

SPP Ver.6.3 で現像された X3F Ver.2.3 の X3F ファイルに記録される現像データは正しく読み出せた。が、それと同じ方法で SPP Ver.5.0 で現像された X3F Ver.2.3 の X3F ファイルを読むと、一部の項目が入れ替わっている。

バイナリエディタを使って、両方のファイルを比較して、DAT(Data Allocation Table)が存在している事が確認出来た。が、それを解析すると、矛盾があることに気が付いた。でも、それが私の勘違いである可能性もあるので、再度解析中。

とりあえず SPP Ver.6.0 以上で現像された X3F ファイルであれば、正しく読んでくる。

SPP のバージョンでデータの置き場所が替わるのは勘弁して欲しいが、過ぎてしまった事なので、今更どうしようもない。何とかシグマのルールに従って、粛々と事を進めるだけである。

なお、画像サイズの欄にアスペクト比の表示を加えたけど、16:9 とかが正しく表示されるかどうかの検証が終わっていない。[3:2] のアスペクト比以外は正しく表示されないか、全く表示されない可能性が高い。

一応、最新版。

SIGMA Exif Reader ダウンロードのページへ

| | コメント (0)

X3F Ver.3.0 解析完了 2015/09/14

X3F Ver.3.0 のフリンジ除去パラメータを解析する事ができた。とりあえず、バージョンアップ。

SIGMA Exif Reader ダウンロードのページへ

今日はとても疲れたので、これまで。

| | コメント (0)

Exif Reader で自業自得の苦悶中 2015/09/13

シグマの RAW ファイル、X3F Ver.3.0 や X3F Ver.2.3 においては現像後に保存されるデータは通常の Exif 形式ではなく、シグマが任意に決めた場所に文字列や単精度実数形式を使って記録されている。それをどうやって、調べるのか・・・。

まず、これと決めた X3F ファイルをオール 0 で現像し、その X3F ファイルを 20 本コピーして、それぞれに Exp + 0.6 とか Contrast +1.3 とか、一つの現像パラメータだけを選び、その値をファイル名の後にくっつけて、実際にそのファイルをファイル名に付けた現像パラメータ通りに現像し、現像データを X3F ファイルに保存する。

そうやって作った X3F ファイルをオール 0 で現像して保存したモノとバイナリエディタを使って比較する。こんな具合である。

これで現像パラメータのどのデータがどこにどの様な形で保存されているのかが判る。

あと一つを残して、X3F ファイル Ver.3.0 の公開されている全ての項目の解析が終了する。プログラムには一昨日に既に反映してあるので、表示されない残りの一つの項目がある事に気が付く人もおられるだろう。

フリンジ除去のデータが非常に難解な方法で記録されている。そのために、フリンジ除去を使ったかどうかまでは判るのだけど、その他の色相中心値、色相範囲、適用量を取り出す方法(計算式)が判らない。3つの要素がたった一つの数値に集約されて保存されているので、その解析で頭を悩ましている。

2日間、これだけに掛かりっきりになっていて、ほとほと疲れ果てた。が、まだ諦めてはいない。あと一日頑張って見て、ダメだったら、この前のように、ここで公開するので、パズルを解くような気持ちで挑戦して欲しい。

とりあえず、細かい部分をチョットだけ手直ししたバージョンをアップさせて頂く。

SIGMA Exif Reader ダウンロードのページへ

| | コメント (0)

チョット忙しかった土曜日 2015/09/12

朝から出身高校の文化祭に出掛けた。写真部OB達の写真を展示しているための店番である。が、午前中は一般者の入場が制限されていたため、他のメンバーには出会うことがなかった。

午後からは「はな」の中学校の運動会。中学校だから撮影に関する制限があるかと思っていたのだけど、観覧場所=撮影場所と言う制限以外は何もなかった。

運動会が終わって家へ帰って来て、一休み。「はな」が帰宅してから家族総出で近所の回転寿司屋で夕飯。

食事後はヨメさんがお気に入りの「はな」の中学校の近くのケーキ屋さんで買ったケーキをみんなで食べた。

その後、気になっていた dp Quattro でカメラ内 RAW 現像した時の Exif 情報を確認して、プログラムに追加。表示の一部に単位が抜けていたのを追加。Photoshop 等で編集された JPEG にサムネイルが含まれないことがあったときのサムネイル表示方法を変更。これで Merrill と Quattro にはほぼ完全に対応出来たと思う。

つまり、今日もバージョンアップ。

ダウンロードのページへ

でも、古い X3F や TIFF 等に未解析の部分があって、まだ未完成。Merrill 世代と Quattro のユーザーには「多分、大丈夫」と言える。

| | コメント (0)

SIGMA Exif Reader さらに少しバージョンアップ 2015/09/11

と言っても、目立つ変更ではないのだけど、一番上に表示していた「ドライブ文字:フォルダ名¥フォルダ名¥ファイル名」(フルパス)から一番最後のファイル名を外した。非常に長いパス(フォルダ名の連なり)に長い名前を持つファイルが保存されていると、表示しきれなくなるためである。だたし、ウィンドウの右端をつかんでズリズリすると長~~~いフォルダ名であっても、全てを表示できる。

ファイル名は拡張子を含めて34文字までは表示できるけど、それ以上長いと右端が切れる。この表示枠は固定されている。

サムネイル(小さい画像)を左上に表示するようにはなったが、内部的には2つの方法を使っている。ファイルの中にサムネイル画像が含まれている場合(大きな JPEG、X3F 等)はそれを表示し、含まれていない場合は実際の画像を縮小して表示している。

アプリケーションウィンドウの位置とサイズを閉じる際に記憶するように設定。ただし、天地の長さを極端に短くしたり長くすると、次に表示したときにサムネイルとファイル名リストの有る部分と下のデータを表示する部分の間隔がおかしくなる。

SPP 6.0.0 から SPP 6.0.3 までの Exif データにはおかしなところが有って、それを回避するのに4時間ほど掛かってしまった。

ダウンロードのページへ


まだ未完成・・・。

| | コメント (0)

SIGMA Exif Reader 少しバージョンアップ 2015/09/10

サムネイルを表示する様になりました。はじめに開いたファイルと同じフォルダにあるファイルを次々に表示できるようにしました。

と言う訳で、寸暇でプログラミングしているため疲れております。

ダウンロードのページへ

まだ未完成・・・。

| | コメント (0)

X3F Ver.2.1 ~ 2.2 に挑戦中 2015/09/07

2002年12月15日に SD9 で撮影した X3F ファイルを SPP 6.3.0 で現像しようとしたが、SPP 6.3.0 では未対応だった。X3F ファイルのバージョンは 2.1、つまり SIGMA SD 用としては最も古いバージョンである。2003年5月11日に SD9 のファームウェアがアップデートされて、作られる X3F ファイルのバージョンが 2.2 になった。SPP 6.3 が現像可能な SD9 で撮影された X3F ファイルは、この 2.2 以降のものである。

X3F ファイルに現像データを記録できるようになったのも、この X3F Ver.2.2 と SPP 2.0 の組み合わせからである。なので、X3F ファイル Ver.2.1 に関しては、記録されているデータを表示しても、その中に現像時のデータは含まれない。

大昔のファイルを引っ張り出して来て、SPP 2.0 をインストールしたので、ファイル内部の解析を始める事が可能になった。が、それを必要としている人がいるとは思えないので、のんびりとやらせて頂く。

少しずつ、アップデートしているので、最新版を試して見たい方はダウンロードして欲しい。

ダウンロードのページへ

まだ、SD9 で 2003 年 5 月以前に撮影された X3F ファイルは与えないで頂きたい。

| | コメント (5)

SIGMA Exif Reader 当初の目的は達成。 2015/09/06

dp Quattro の X3F、JPEG、TIFF に含まれる Exif データは表示できるようになった。始めた時はそれが目標だったので、一応完成したと言っても良いだろう。

でも、モノはついでで、昔のファイルにも対応はしている。が、SD9 の初期、SPP のバージョンだと 1.0 ~ 1.1、X3F のバージョンで言うと 2.1 のファイルを読むとエラーが出る。10 年以上前のデータなので、内部の解析もまだ手を着けていない。

が、現時点でも、シグマ製デジタルカメラによって撮影され、SPP で出力されたファイルの Exif はほとんど読めている。X3F ファイルの古いバージョン 2.3 ~ 3.0 でカラー調整の情報が正しく表示できていないバグがあるけど、止まったりはしない。

ダウンロードのページへ

まだ、10 年以上前のファイルは与えないで頂きたい。

| | コメント (0)

dp Quattro の X3F ファイル、解析完了。 2015/09/05

SPP 6.3 で X3F ファイルを現像する際にユーザーが変更可能な全てのパラメータがファイルのどこに、どの様に記録されているかの解析が完了した。が、X3F ファイルにはとんでもない数の訳のわからないデータが保存されている。読み出し可能なタグの総数は G1 ~ G3 の重複を除いても1ファイルに付き 326 個。現像時のパラメータ以外はユーザーが変更可能なモノではなさそうなので、それらのデータが何を意味するのかを予測することは出来ても、解析することは不可能に近い。いずれにしても、私たちが勝手に変更してはいけないデータである事は確かで、そのまま放って置く。

解析が完了したと言っても、それを正しく表示するプログラムが完成したわけでは無い。これからせっせと書くことになる。それにしても X3F ファイル内での記録方法には一部、お約束が判っていないと意味不明な記録方法があって、かなり手こずった。

しかも、現像データが保存された X3F ファイルには Exif 情報を記録してある場所が5箇所もある。1つは(多分)カメラ内で現像した場合の現像パラメータ、もう一つはカメラ内 JPEG に埋め込むための JPEG 準拠の Exif データ、そして SPP で現像した際のパラメータを記録してある G1 ~ G3 までの3箇所、計5箇所である。G1 ~ G3 の各グループには現像時にユーザーが変更可能な 27 個のデータだけでなく、1グループに付き 59 個のデータが記録されている。私たちが変更できない 32 個のデータが何を意味するのかはシグマのみぞ知る。

SIGMA Exif Reader は SPP と同様に、一番最後に保存されたグループの現像時のパラメータのみを表示する。3つのグループ全ての現像パラメータを表示すると非常に多くの行数を使い、表示が煩雑になると思うので、現時点では考えていない。

現在リリースしてあるバージョンに X3F ファイルをドロップして表示されるのは、カメラ内 JPEG の撮影データなので、プログラムを全て書き換えなければならない。明日の夜までには終わると思うけど、その後には古い X3F ファイルの解析が待っている・・・。(^^;

| | コメント (0)

Quattro の X3F がまだ解析できていない。 2015/09/04

JPEG ファイルや TIFF ファイルは数十年の歴史と規格(ファイルフォーマット)が明確に決められていて、それが公開されているので、そのルールを理解してしまえば、ぎっしりと書き込まれている情報を通常の表現に変換することはあまり難しくはない。私の様な販売管理システムやアンケート集計システム、顧客管理システムなどを構築してきたいわゆるシステム屋のプログラマーでも、数日でプログラミングすることが可能である。

が、X3F ファイルは FOVEON 社とシグマが(失礼な表現を許してもらえるのであれば)勝手に決めたルールに基づいてデータを記録している。JPEG や TIFF ではひとかたまりで記録されているタグ(情報のコード)の数は2バイトを使って表すことになっているが、X3F ファイルの中では、Exif のルールに則っている部分では2バイトなのに、X3F 独自のデータ書き込み領域では4バイトを使っている。

また、ひとかたまりで記録されている情報の起点も JPEG や TIFF では明確であるのに、X3F では今ひとつ良く解らない。つまり、起点を正確に把握していないと、データは起点から数えて XXX バイト目に書いてありますよと教えられても意味が無い。1バイトずれただけで、全く異なる値となってしまうからだ。

そんなわけで、未だに X3F Ver.4.1 の最後尾にまとめて記録されている G1 から G3 までの、保存された現像パラメータが正しく読み出せていない。あと一息のところまで来てはいるのだけど、仕事と子育ての合間のプログラミンであるため、今ひとつ効率が悪い。


などと、愚痴をこぼしているヒマがあったら、プログラムを書けと怒られそう。実は JPEG 及び TIFF の Exif を表示するプログラムに一部気に入らない部分があったのを、コッソリ直した。最新版は昨夜アップしてあるので、気になる方はダウンロードして欲しい。

SIGMA Exif Reader ダウンロードのページへ

| | コメント (0)

Quattro の X3F はとっても大変・・・。 2015/09/03

X3F ファイルにもバージョンがある。ざっと調べただけだけど SD9 のはじめの頃は Ver.2.1(SPP 1)、SD10 が出た後の SD9 ~ SD14、DP1 が Ver.2.2(SPP 3)、SD15 や DP2 や SD1、Merrill で Ver.2.3(SPP 4)、DP3 Merrill 以降の DP Merrill で 3.0(SPP 5)、dp2 Quattro で Ver.4.0、 dp1 Quattro 以降の Quattro が Ver.4.1(SPP 6)。

Ver.4.0 からは現像後に X3F ファイルにデータを保存する方法が変わった。X3F Ver.3.0 まではファイルの先頭部分にある Exif データディレクトリに現像時のパラメータを書き戻していたのだけど、X3F Ver.4.0 からは、撮影時のパラメータはそのままで、ファイルの最後に G1 ~ G3 までの現像パラメータを追加して書き込むようになった。

この2日間で判ったのはここまで。X3F ファイルの最後尾に追加された現像パラメータを解析して、表示する作業はこれから始める。運が良ければ今夜中に終わるかも知れないが、やってみないとわからない。

予想した通り、あまり期待されていないようなので、少しモチベーションが下がっている。(^^;

| | コメント (2)

TIFF は何とかなったけど・・・。 2015/09/02

現在、X3F と格闘中。ここまでしか出来ていない。

今夜も眠れないかも・・・。

ダウンロードのページへ

↑ TIFF ファイルも読めるようになったバージョンをアップしました。

| | コメント (0)

とりあえずリリース。 2015/09/01

今日は「はな」の誕生日。ティーンエイジャーになったので、毎年恒例の「お誕生日ショット」は終了します。

SIGMA Exif Reader をとりあえずリリースします。

まだ未完成です。将来的には TIFF と X3F もサポートする予定ですが、現時点では SPP 6.x.x で現像された JPEG ファイルのみを正式にサポートしています。その他の JPEG も何とか動きますが、正しく表示される保証はありません。

なお、書き込みは一切しませんので、ファイルが壊れたりする心配はご無用です。

質問、ご要望は、このブログにコメントしてください。

ダウンロードのページへ

一応、注意書きを読んでください。あ、一応フリーウェアですが、著作権は私に帰属します。

それでは、おやすみなさい。

| | コメント (0)

« 2015年8月 | トップページ | 2015年10月 »