예제 #1
0
 void OnImageReady(NikonDevice sender, NikonImage image)
 {
     if (_imageReady != null)
     {
         _imageReady(sender, image);
     }
 }
예제 #2
0
        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);
            }
        }
예제 #3
0
 void device_ImageReady(NikonDevice sender, NikonImage image)
 {
     Save(image.Buffer, "image" + ((image.Type == NikonImageType.Jpeg) ? ".jpg" : ".nef"));
 }
예제 #4
0
        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);
            }
        }
예제 #5
0
 void OnImageReady(NikonDevice sender, NikonImage image)
 {
     if (_imageReady != null)
     {
         _imageReady(sender, image);
     }
 }
예제 #6
0
        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);
            }
        }
예제 #7
0
파일: Form1.cs 프로젝트: osamu3/tackPic
        // 撮影画像の準備完了時のイベントメソッド:撮影画像を保存し、保存完了時に【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
            }
        }
예제 #8
0
        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);
                }
            }
        }