上へ ワークフロー 画像仕様 フォルダ構成 データベース構成 システム運用系 植物写真系 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
|