ホーム ] わが家のPC環境 ] 64ビットPC自作 ] 地デジ ] PC音楽システム ] PC写真システム ] Exifファイル入門 ]

上へ
ワークフロー
画像仕様
フォルダ構成
データベース構成
システム運用系
植物写真系
Web処理系
写真表示コントロール
写真画像生成
現像(Nikon Capture 4)との連携
写真印刷

PC写真システム

現像(Nikon Capture 4)との連携

最終更新日:2006/09/17  修正

 現像(Nikon Capture 4)は別アプリで行うので、そのままでは、フローが途切れてしまう。これを、連続で流すために、Shell関数とアプリへのパラメータ引渡しを利用している。格段に便利になった。

●概要

 別アプリに制御を移し、終わればまた戻ってくることができれば、処理が見かけ上連続する。こう言った場合には、Shell関数を利用するのが常套手段である。また、大抵の市販アプリには 下記のようにパラメータを指定して起動できるので、これを利用する。

 Shell  対象となる実行モジュールのパス "処理したいファイルのパス"

 今回は、以下のような連携となる。


再現像例
Nikon Capture が指定されたRAWを自動的に個別現像している所。パレットでリアルタイムに補正できる。

●事例

 再現像の場合を紹介する。

メニュー "この写真を再現像"の処理

画像表示で、再現像したい一つの画像を選び、"再現像"を指示する。


Try
   Kill(dpNewPhotoP + "RePrint\*.*")    '再現像結果領域をクリアしておく
Catch
   'NOP
End Try
Dim Fld As String = DS.Tables("Tbl").Rows(CurrS)("フォルダ")

'再現像する写真のRAWファイルパス FP をパラメータとして指定する。

NikonCapture は、現像プログラムの実行モジュールへの絶対パス。

Dim FP As String = RAWPath(PNo, Fld)
Shell(NikonCapture + " """ + FP + """", AppWinStyle.MaximizedFocus, True)

'ファイルパスは文字列内で文字列を表す必要がある。
True にて、終了まで待つ。Nikon Capture は、FP のRAW を自動的に読み込み、個別現像を行い結果を表示する。このとき、露出補正などをインタラクティブに施せる。結果のJPGを指定のフォルダに保存して終了する。 このとき、RAWも保存できる。RAW本体には影響はなく、別途、現像パラメータとして埋め込まれる。これは次回の現像で使用できる。

Application.DoEvents()
Dim fs() As String = Directory.GetFiles(dpNewPhotoP + "RePrint", "*.jpg")
If fs.Length = 1 Then                      '結果があれば処理
   Me.Cursor = Cursors.WaitCursor
   Dim bmp, cmp As Bitmap
   Dim st As Stream = File.Open(fs(0), FileMode.Open)
   bmp = Bitmap.FromStream(st)
   st.Close()
   CreatePhoto(PhotoID.Thumb, bmp, cmp)
   SaveJPG(cmp, ThumbPath(PNo, Fld), PhotoQ(PhotoID.Thumb))
   CreatePhoto(PhotoID.SmallWeb, bmp, cmp)
   SaveJPG(cmp, SmallWebPath(PNo, Fld), PhotoQ(PhotoID.SmallWeb))
   CreatePhoto(PhotoID.LargeWeb, bmp, cmp)
   SaveJPG(cmp, LargeWebPath(PNo, Fld), PhotoQ(PhotoID.LargeWeb))
   CreatePhoto(PhotoID.Monitor, bmp, cmp)
   SaveJPG(cmp, MonitorPath(PNo, Fld), PhotoQ(PhotoID.Monitor))
   bmp.Dispose()
   cmp.Dispose()
   FileCopy(fs(0), PrintPath(PNo, Fld))
   Me.Cursor = Cursors.Default
   MsgBox("再現像結果を上書き保存しました。")    '写真画像を自動更新する
End If