・・・構築中なのデス! SIGMA RAW(FoveonX3Fファイル)の撮影情報連続取得スクリプト。
最新版は次のログで公開/更新中・・・ コチラのログは、スクリプト比較向けに放置w
因みに あの、X3Fって拡張子のファイル、厳密に云うと、JPEGで云うトコロのEXIFってのには準拠出来ていない。
なので、Windowsのエクスプローラで使うには結構不便を強いられる。
しかも、本家提供の現像アプリSIGMA PhotoPro3.xですら、
ファームウェア更新などで拡張されたプロパティ等を、完全に読み出せないと云う罠・・・
撮影したら即、必要な情報メモっておくか、カメラ(CF)にデータがあるウチ(端末へ転送してしまう前)に、
情報控えておかないと、管理できない・・・
そんなデジタルデータなんて、使い悪くて仕方ないんだが・・・(-_-;)
で、バイナリエディタでX3Fファイル覗いたら、なんか知らん、ファイルの先頭に全てあるではナイでsky♪
だったら、文字列解析で利用した、ADODBStreamで特定範囲を読み出すだけのほうが、
SPP使うよりアクセス時間短縮できる・・・ ってのは、随分前から考えていたのだが、
ソコはソレおきつねさまくおりてぃ、ダレかが作るだろうと永らく放置していたのだ!
・・・って、チョイと文字列の扱いが面倒だったので手を付けなかっただけなのだが、
此度は諦め、1日使って最適な呼び出し方など模索し、解決に至った。
以下スクリプトで単体動作可能だが、1ファイルずつドロップする体なので、使い勝手は良くない。
このレベルだと、SPPでやってるよりは マシンに負荷が掛からないってぇトコだけが利点な程度。
おきつねさますくりぷととしては、とてもクオリティを満たしているとは云い難い。
ツマり・・・
アクマでテストな版デスから。
ってコトでw
明日 このコアに、連続ファイル/フォルダ投入/日時文字列化/iniローダ/日付バックアップ/html吐き出しなど、
今までのライブラリを そのまま適用したり、下記に内包させて最適化を図るなどして、
SPPと等価の文字列を連続したHTMLとして取得可能なスクリプトに仕上げる。
(ココに晒す写真や そのデータを手作業で並べるのが面倒になっただけw)
取り敢えずコアなどww
Public My, Parameters, Fs, objADO Set My = WScript With My Set Parameters = .Arguments If Parameters.Count <= 0 Then .Quit End If Set Fs = .CreateObject("Scripting.FileSystemObject") Set objADO = CreateObject("ADODB.Stream") End With Const vbWq = """" Dim vbWCrLf, vbTc, vbNullB vbWCrLf = vbCrLf & vbCrLf vbTc = vbTab & vbCrLf vbNullB = chr(&h00) X3FSIR Parameters(0),34 Set Fs = Nothing Set objADO = Nothing My.Quit Function X3FSIR(strTarget, KeyCount) Dim Lc, sName, iADO, sADO, Pc, kPc, rByte, cResult, arResult, rUnits Const strEx = "X3F" Lc = (KeyCount * 2) - 1 If Fs.GetExtensionName(strtarget) = strEx Then sName = Replace(strtarget,"." & strEx,".txt") Set iADO = objADO With iADO .Type = 1 .Open .LoadFromFile strTarget For Pc = 1 To 1100 Step 1 .Position = 527 + Pc rByte = rByte & CStr(.Read(1)) Next .Close cResult = Replace(rByte,vbNullB & vbNullB & vbNullB & vbNullB & vbNullB, "") cResult = Replace(cResult," ", "") arResult = Split(cResult,vbNullB) For Pc = 0 To Lc rUnits = rUnits & arResult(Pc) If kPc = 0 Then rUnits = rUnits & "," kPc = 1 Else rUnits = rUnits & vbCrLf kPc = 0 End If Next .Type = 2 .Charset = "_autodetect" .Open .WriteText rUnits .Position = 0 .SaveToFile sName, 2 .Close End With Set iADO = Nothing End If End Function
|
・・・SD14のX3Fファイルでしかテスト出来ないので、このままで同社他機種に対応できるかは不明。
ただ、メチャクチャ単純な処理しか使っていないので、各位で好き勝手改変して使ってもらうのもアリだろう。
メドイけど(^_^;)
0 件のコメント:
コメントを投稿
注: コメントを投稿できるのは、このブログのメンバーだけです。