public override LiveViewData GetLiveViewImage() { _timer.Stop(); LiveViewData viewData = new LiveViewData(); if (Monitor.TryEnter(Locker, 10)) { try { //DeviceReady(); viewData.HaveFocusData = false; MTPDataResponse response = ExecuteReadDataEx(CONST_CMD_CANON_EOS_GetViewFinderData, 0x00100000); ErrorCodes.GetException(response.ErrorCode); if (response.Data == null) { _timer.Start(); return(null); } viewData.ImageDataPosition = 0; viewData.ImageData = response.Data; } catch (Exception e) { Log.Error("Error get live view image ", e); } finally { Monitor.Exit(Locker); } } _timer.Start(); return(viewData); }
public void _liveViewTimer_Tick(object sender, EventArgs e) { LiveViewData liveViewData = null; try { liveViewData = DeviceManager.SelectedCameraDevice.GetLiveViewImage(); Console.WriteLine(liveViewData); } catch (Exception) { return; } if (liveViewData == null || liveViewData.ImageData == null) { return; } try { var image = new MemoryStream(liveViewData.ImageData, liveViewData.ImageDataPosition, liveViewData.ImageData.Length - liveViewData.ImageDataPosition); GlobalSocket.Send(image); } catch (Exception) { } }
protected override void GetAdditionalLiveViewData(LiveViewData viewData, byte[] result) { viewData.LiveViewImageWidth = ToInt16(result, 8); viewData.LiveViewImageHeight = ToInt16(result, 10); viewData.ImageWidth = ToInt16(result, 12); viewData.ImageHeight = ToInt16(result, 14); viewData.FocusFrameXSize = ToInt16(result, 24); viewData.FocusFrameYSize = ToInt16(result, 26); viewData.FocusX = ToInt16(result, 28); viewData.FocusY = ToInt16(result, 30); viewData.Focused = result[48] != 1; viewData.MovieIsRecording = result[68] == 1; viewData.MovieTimeRemain = ToDeciaml(result, 64); if (result[37] == 1) { viewData.Rotation = -90; } if (result[37] == 2) { viewData.Rotation = 90; } viewData.HaveLevelAngleData = true; viewData.LevelAngleRolling = ToInt16(result, 52); viewData.PeakSoundL = (int)(result[352] / 14.0 * 100); viewData.PeakSoundR = (int)(result[353] / 14.0 * 100); viewData.SoundL = (int)(result[354] / 14.0 * 100); viewData.SoundR = (int)(result[355] / 14.0 * 100); viewData.HaveSoundData = true; }
public override LiveViewData GetLiveViewImage() { LiveViewData viewData = new LiveViewData(); viewData.HaveFocusData = true; const int headerSize = 128; var result = StillImageDevice.ExecuteReadData(CONST_CMD_GetLiveViewImage); if (result.ErrorCode == ErrorCodes.MTP_Not_LiveView) { _timer.Start(); viewData.IsLiveViewRunning = false; viewData.ImageData = null; return(viewData); } if (result.Data == null || result.Data.Length <= headerSize) { return(null); } int cbBytesRead = result.Data.Length; GetAdditionalLiveViewData(viewData, result.Data); MemoryStream copy = new MemoryStream(cbBytesRead - headerSize); copy.Write(result.Data, headerSize, cbBytesRead - headerSize); copy.Close(); viewData.ImageData = copy.GetBuffer(); return(viewData); }
override public LiveViewData GetLiveViewImage() { LiveViewData viewData = new LiveViewData(); viewData.HaveFocusData = true; const int headerSize = 128; byte[] result = StillImageDevice.ExecuteReadData(CONST_CMD_GetLiveViewImage); if (result == null || result.Length <= headerSize) { return(null); } int cbBytesRead = result.Length; GetAditionalLIveViewData(viewData, result); MemoryStream copy = new MemoryStream((int)cbBytesRead - headerSize); copy.Write(result, headerSize, (int)cbBytesRead - headerSize); copy.Close(); viewData.ImageData = copy.GetBuffer(); return(viewData); }
public override LiveViewData GetLiveViewImage() { LiveViewData viewData = new LiveViewData(); if (Monitor.TryEnter(Locker, 1)) { try { //DeviceReady(); viewData.HaveFocusData = false; viewData.ImagePosition = 0; viewData.ImageData = _liveViewImageData.ImageData; viewData.ImageHeight = 100; viewData.ImageWidth = 100; viewData.LiveViewImageHeight = 100; viewData.LiveViewImageWidth = 100; viewData.FocusX = _liveViewImageData.ZommBounds.X; viewData.FocusY = _liveViewImageData.ZommBounds.Y; viewData.FocusFrameXSize = _liveViewImageData.ZommBounds.Width; viewData.FocusFrameYSize = _liveViewImageData.ZommBounds.Height; } catch (Exception e) { //Log.Error("Error get live view image ", e); } finally { Monitor.Exit(Locker); } } return(viewData); }
void _liveViewTimer_Tick(object sender, EventArgs e) { LiveViewData liveViewData = null; try { liveViewData = CameraDevice.GetLiveViewImage(); } catch (Exception) { return; } if (liveViewData == null || liveViewData.ImageData == null) { return; } try { pictureBox1.Image = new Bitmap(new MemoryStream(liveViewData.ImageData, liveViewData.ImagePosition, liveViewData.ImageData.Length - liveViewData.ImagePosition)); } catch (Exception) { } }
protected override void GetAdditionalLiveViewData(LiveViewData viewData, byte[] result) { viewData.LiveViewImageWidth = ToInt16(result, 8); viewData.LiveViewImageHeight = ToInt16(result, 10); viewData.ImageWidth = ToInt16(result, 12); viewData.ImageHeight = ToInt16(result, 14); viewData.FocusFrameXSize = ToInt16(result, 16); viewData.FocusFrameYSize = ToInt16(result, 18); viewData.FocusX = ToInt16(result, 20); viewData.FocusY = ToInt16(result, 22); viewData.Focused = result[40] != 1; viewData.MovieIsRecording = result[60] == 1; viewData.MovieTimeRemain = ToDeciaml(result, 56); if (result[29] == 1) { viewData.Rotation = -90; } if (result[29] == 2) { viewData.Rotation = 90; } viewData.HaveLevelAngleData = true; viewData.LevelAngleRolling = ToInt16(result, 44); }
public override LiveViewData GetLiveViewImage() { LiveViewData viewData = new LiveViewData(); if (Monitor.TryEnter(Locker, 10)) { try { //DeviceReady(); viewData.HaveFocusData = true; const int headerSize = 384; byte[] result = StillImageDevice.ExecuteReadData(CONST_CMD_GetLiveViewImage); if (result == null || result.Length <= headerSize) { return(null); } GetAditionalLIveViewData(viewData, result); viewData.ImagePosition = headerSize; viewData.ImageData = result; } finally { Monitor.Exit(Locker); } } return(viewData); }
/// <summary> /// Gets the live view. /// </summary> public void GetLiveView() { LiveViewData liveViewData = CameraDevice.GetLiveViewImage(); if (liveViewData == null || liveViewData.ImageData == null) { return; } Image = new Bitmap(new MemoryStream(liveViewData.ImageData, liveViewData.ImageDataPosition, liveViewData.ImageData.Length - liveViewData.ImageDataPosition)); }
protected override void GetAditionalLIveViewData(LiveViewData viewData, byte[] result) { viewData.LiveViewImageWidth = ToInt16(result, 8); viewData.LiveViewImageHeight = ToInt16(result, 10); viewData.ImageWidth = ToInt16(result, 12); viewData.ImageHeight = ToInt16(result, 14); viewData.FocusFrameXSize = ToInt16(result, 24); viewData.FocusFrameYSize = ToInt16(result, 26); viewData.FocusX = ToInt16(result, 28); viewData.FocusY = ToInt16(result, 30); viewData.Focused = result[48] != 1; }
void Get() { LiveViewData LiveViewData = null; try { LiveViewData = _cameraDevice.GetLiveViewImage(); if (LiveViewData != null && LiveViewData.ImageData != null) { Bitmap bitmap = new Bitmap(new MemoryStream(LiveViewData.ImageData, LiveViewData.ImageDataPosition, LiveViewData.ImageData.Length - LiveViewData.ImageDataPosition)); _image.Dispatcher.Invoke(() => _image.Source = BitmapUtils.BitmapToImageSource(bitmap)); } } catch (Exception) { } }
void Camera_LiveViewUpdate(object sender, EosLiveImageEventArgs e) { LiveViewData viewData = new LiveViewData(); if (Monitor.TryEnter(Locker, 1)) { try { _liveViewImageData = e; } catch (Exception exception) { Log.Error("Error get live view image event", exception); } finally { Monitor.Exit(Locker); } } }
/// <summary> /// Gets the live view. /// </summary> public void GetLiveView() { LiveViewData liveViewData = CameraDevice.GetLiveViewImage(); if (liveViewData == null || liveViewData.ImageData == null) { return; } var image = new BitmapImage(); image.BeginInit(); image.StreamSource = new MemoryStream(liveViewData.ImageData, liveViewData.ImageDataPosition, liveViewData.ImageData.Length - liveViewData.ImageDataPosition); image.CacheOption = BitmapCacheOption.OnLoad; image.EndInit(); image.Freeze(); ImageView.Source = image; }
private void DrawFocusPoint(WriteableBitmap bitmap, LiveViewData liveViewData) { try { if (liveViewData == null) { return; } double xt = bitmap.Width / liveViewData.ImageWidth; double yt = bitmap.Height / liveViewData.ImageHeight; bitmap.DrawRectangle((int)(liveViewData.FocusX * xt - (liveViewData.FocusFrameXSize * xt / 2)), (int)(liveViewData.FocusY * yt - (liveViewData.FocusFrameYSize * yt / 2)), (int)(liveViewData.FocusX * xt + (liveViewData.FocusFrameXSize * xt / 2)), (int)(liveViewData.FocusY * yt + (liveViewData.FocusFrameYSize * yt / 2)), liveViewData.HaveFocusData ? Colors.Green : Colors.Red); } catch (Exception exception) { Log.Error("Error draw helper lines", exception); } }
private void GetLiveView() { try { if (_isLiveViewPaused) { return; } _liveViewData = CameraDevice.GetLiveViewImage(); if (_liveViewData != null && _liveViewData.ImageData != null) { using ( MemoryStream stream = new MemoryStream(_liveViewData.ImageData, _liveViewData.ImageDataPosition, _liveViewData.ImageData.Length - _liveViewData.ImageDataPosition)) { //Rotation = LiveViewData.Rotation; //if (CameraDevice is CanonSDKBase) // Rotation = 90; BitmapImage bi = new BitmapImage(); bi.BeginInit(); bi.CacheOption = BitmapCacheOption.OnLoad; bi.StreamSource = stream; bi.EndInit(); //bi.Freeze(); var bitmap = BitmapFactory.ConvertToPbgra32Format(bi); bitmap.Freeze(); BitmapSource = bitmap; } } } catch (Exception ex) { Log.Debug("Live view error ", ex); } }
protected override void GetAditionalLIveViewData(LiveViewData viewData, byte[] result) { viewData.LiveViewImageWidth = ToInt16(result, 8); viewData.LiveViewImageHeight = ToInt16(result, 10); viewData.ImageWidth = ToInt16(result, 12); viewData.ImageHeight = ToInt16(result, 14); viewData.FocusFrameXSize = ToInt16(result, 24); viewData.FocusFrameYSize = ToInt16(result, 26); viewData.FocusX = ToInt16(result, 28); viewData.FocusY = ToInt16(result, 30); viewData.Focused = result[48] != 1; viewData.MovieIsRecording = result[70] == 1; if (result[37] == 1) viewData.Rotation = -90; if (result[37] == 2) viewData.Rotation = 90; }
public override LiveViewData GetLiveViewImage() { LiveViewData viewData = new LiveViewData(); if (Monitor.TryEnter(Locker, 10)) { try { //DeviceReady(); viewData.HaveFocusData = true; const int headerSize = 384; var result = StillImageDevice.ExecuteReadData(CONST_CMD_GetLiveViewImage); if (result.ErrorCode == ErrorCodes.MTP_Not_LiveView) { _timer.Start(); viewData.IsLiveViewRunning = false; viewData.ImageData = null; return(viewData); } if (result.Data == null || result.Data.Length <= headerSize) { return(null); } GetAdditionalLiveViewData(viewData, result.Data); viewData.ImageDataPosition = headerSize; viewData.ImageData = result.Data; } finally { Monitor.Exit(Locker); } } return(viewData); }
private void Instance_Message(object sender, MessageEventArgs e) { switch (e.Name) { case Messages.LiveViewChanged: { var param = e.Param as object[]; if (param != null) { _liveViewData = (LiveViewData)param[1]; var stream = e.Context.ImageStream; stream.Seek(0, SeekOrigin.Begin); BitmapImage bi = new BitmapImage(); bi.BeginInit(); bi.StreamSource = stream; bi.CreateOptions = BitmapCreateOptions.IgnoreColorProfile; bi.CacheOption = BitmapCacheOption.OnLoad; bi.EndInit(); if (WorkflowManager.Instance.Context.CameraDevice.LiveViewImageZoomRatio?.Value == "All" && ShowFocusArea) { var writeableBitmap = BitmapFactory.ConvertToPbgra32Format(bi); DrawFocusPoint(writeableBitmap, _liveViewData); writeableBitmap.Freeze(); LiveBitmap = writeableBitmap; } else { bi.Freeze(); LiveBitmap = bi; } } } break; case Messages.PhotoDownloaded: { RaisePropertyChanged(() => FileItems); FileItem item = e.Param as FileItem; if (item != null) { FileItem = item; } RaisePropertyChanged(() => Bitmap); RaisePropertyChanged(() => PreviewTitle); if (FileItems.Count < 2) { PreviewTabActive = true; } } break; case Messages.ThumbUpdated: case Messages.NextPhoto: case Messages.PrevPhoto: case Messages.DeletePhoto: case Messages.ClearPhotos: { RaisePropertyChanged(() => FileItem); RaisePropertyChanged(() => Bitmap); RaisePropertyChanged(() => PreviewTitle); } break; } }