void OnImageReady(NikonDevice sender, NikonImage image) { if (_imageReady != null) { _imageReady(sender, image); } }
void data_DataFile(NikonObject sender, NkMAIDFileInfo fileInfo, IntPtr data) { if (fileInfo.ulStart == 0) { Debug.Assert(_currentImage == null); int size = (int)fileInfo.ulTotalLength; NikonImageType type = (NikonImageType)(_currentItemId >> 27); int number = (int)((_currentItemId << 8) >> 8); bool isFragmentOfRawPlusJpeg = (_currentItemId & (1 << 26)) != 0; _currentImage = new NikonImage(size, type, number, isFragmentOfRawPlusJpeg); } Debug.Assert(_currentImage != null); int offset = (int)fileInfo.ulStart; int length = (int)fileInfo.ulLength; _currentImage.CopyFrom(data, offset, length); bool complete = (fileInfo.ulTotalLength == fileInfo.ulStart + fileInfo.ulLength); if (complete) { NikonImage image = _currentImage; _currentImage = null; Scheduler.Callback(new ImageReadyDelegate(OnImageReady), this, image); } }
void device_ImageReady(NikonDevice sender, NikonImage image) { Save(image.Buffer, "image" + ((image.Type == NikonImageType.Jpeg) ? ".jpg" : ".nef")); }
void _device_ImageReady(NikonDevice sender, NikonImage image) { // Save captured image to disk string filename = "image" + ((image.Type == NikonImageType.Jpeg) ? ".jpg" : ".nef"); using (FileStream s = new FileStream(filename, FileMode.Create, FileAccess.Write)) { s.Write(image.Buffer, 0, image.Buffer.Length); } }
// 撮影画像の準備完了時のイベントメソッド:撮影画像を保存し、保存完了時に【writeImgFileCallback】Hubを呼び出す。 void device_ImageReady(NikonDevice sender, NikonImage image) { using (MemoryStream memStream = new MemoryStream(image.Buffer)) { // 画像データの検証オン _PhotImg = System.Drawing.Image.FromStream(memStream); //保存する写真画像のユーニークなファイル名 //確認用に、フォームに撮った写真をフォームに表示 picBoxPhotImage.Image = _PhotImg; //写真画像保存時のファイル名にユニークな名前を付ける。 string fileUnqNm = "phot" + DateTime.Now.Month.ToString() + "_" + DateTime.Now.Day.ToString() + "_" + DateTime.Now.Hour.ToString() + "_" + DateTime.Now.Minute.ToString() + "_" + DateTime.Now.Second.ToString() + "_" + DateTime.Now.Millisecond.ToString() + ".jpg"; #region 条件分岐:ローカルサーバへのファイル保存がONなら if (chkBxFileSave.Checked == true) { try {//ファイル保存 Console.WriteLine("写真画像保存開始"); //flStream.BeginWriteイベントハンド呼び出し時に使用するステイタスパラメータクラスのインスタンスを作成 using (EvHndParamClass param = new EvHndParamClass()) { // ファイル書き込み終了時のイベントハンドラで実行されるコールバックメソッド内でファイル名を利用すため //そのイベントハンドラに渡すパラメータの、stプロパティにファイル名をセット param.str = fileUnqNm; //非同期書き込み用のファイルストリームを作成 using (FileStream flStream = new FileStream(@"C:\inetpub\wwwroot\images/" + fileUnqNm, FileMode.Create, FileAccess.Write, FileShare.ReadWrite, image.Buffer.Length, true)) { //非同期書き込み、書き込み終了時に呼び出されるメソッド【writeFileCallback】 //flStream.BeginWrite(image.Buffer, 0, image.Buffer.Length, new AsyncCallback(writeImgFileCallback), flStream); flStream.BeginWrite(image.Buffer, 0, image.Buffer.Length, new AsyncCallback(writeImgFileCallback), param); // await writer.WriteAsync(input); } } } catch (Exception ex) { Console.WriteLine("err:" + ex.Message + " 写真画像ファイル書き込み失敗!"); } } #endregion #region 条件分岐: FTPアップロードチェックボックスがONなら if (chkBxFtpUpLoad.Checked == true) { try {//↓は、FTPにて写真アップロードの【場合】です。 WebClient wc = new WebClient(); //アップロード完了時イベントを登録 wc.UploadDataCompleted += (s, e) => { Console.WriteLine("アップロード完了"); _HubProxy.Invoke("PhotChange", fileUnqNm).Wait(); }; //Uri u = new Uri("" + fileUnqNm); Uri u = new Uri("ftp://waws-prod-os1-001.ftp.azurewebsites.windows.net/site/wwwroot/images/" + fileUnqNm); //認証設定 // wc.Credentials = new NetworkCredential(@"", ""); wc.Credentials = new NetworkCredential(@"picUpSignalR\$picUpSignalR", FtpCredentials); Console.WriteLine("写真画像FTPアップロード開始"); wc.UploadDataAsync(u, image.Buffer); } catch (Exception ex) { //MessageBox.Show(ex.ToString()); Console.WriteLine("err:" + ex.Message + " 写真画像FTPアップロード失敗!"); } } #endregion } }
void device_ImageReady(NikonDevice sender, NikonImage image) { SaveFileDialog dialog = new SaveFileDialog(); dialog.Filter = (image.Type == NikonImageType.Jpeg) ? "Jpeg Image (*.jpg)|*.jpg" : "Nikon NEF (*.nef)|*.nef"; if (dialog.ShowDialog() == DialogResult.OK) { using (FileStream stream = new FileStream(dialog.FileName, FileMode.Create, FileAccess.Write)) { stream.Write(image.Buffer, 0, image.Buffer.Length); } } }