TUCameraImageSaveFastSpeed.cs 3.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130
  1. using System;
  2. using System.Collections.Generic;
  3. using TUCAMAPI;
  4. namespace TUCamera
  5. {
  6. class TUCameraImageSaveFastSpeed : TUCameraIFrameProcess
  7. {
  8. private TUCamera m_camera;
  9. private FrameProcesserState m_state = FrameProcesserState.STOP;
  10. private DateTimeTools m_tools = null;
  11. private Int64 m_duration = 0;
  12. private string m_savePath;
  13. private string m_imagePrefix;
  14. private TUIMG_FORMATS m_imageFormat;
  15. public List<string> m_imgList = new List<string>();
  16. /// <summary>
  17. /// 最大速度持续一段时间拍摄
  18. /// </summary>
  19. /// <param name="savePath">文件保存路径</param>
  20. /// <param name="imagePrefix">文件名前缀</param>
  21. /// <param name="imageFormat">文件保存格式</param>
  22. /// <param name="duration">持续拍摄时间</param>
  23. public TUCameraImageSaveFastSpeed(TUCamera camera, string savePath, string imagePrefix, TUIMG_FORMATS imageFormat, Int64 duration)
  24. {
  25. m_camera = camera;
  26. m_savePath = savePath;
  27. m_imagePrefix = imagePrefix;
  28. m_imageFormat = imageFormat;
  29. m_duration = duration;
  30. m_tools = new DateTimeTools((UInt64)duration);
  31. if (!System.IO.Directory.Exists(m_savePath))
  32. {
  33. System.IO.Directory.CreateDirectory(m_savePath);//不存在就创建目录
  34. }
  35. }
  36. public void DoProcess(ref TUCAM_FRAME frame)
  37. {
  38. if (m_state != FrameProcesserState.PLAY)
  39. {
  40. return;
  41. }
  42. // 持续一直拍摄
  43. if (m_duration < 0)
  44. {
  45. string fileName = CreatFileName();
  46. bool result = m_camera.SaveImage(ref frame, fileName, m_imageFormat);
  47. if (result)
  48. {
  49. m_imgList.Add(creatImageName(fileName, m_imageFormat));
  50. }
  51. return;
  52. }
  53. // 持续固定的一段时间拍摄
  54. if (m_tools.Timeout())
  55. {
  56. Stop();
  57. }
  58. else
  59. {
  60. string fileName = CreatFileName();
  61. bool result = m_camera.SaveImage(ref frame, fileName, m_imageFormat);
  62. if (result)
  63. {
  64. m_imgList.Add(creatImageName(fileName, m_imageFormat));
  65. }
  66. }
  67. }
  68. private string CreatFileName()
  69. {
  70. DateTime now = DateTime.Now;
  71. return m_savePath + "\\" + m_imagePrefix + now.ToString("yyyyMMddHHmmssfff");
  72. }
  73. private string creatImageName(string fileName, TUIMG_FORMATS imageFormat)
  74. {
  75. // string fileName = fileName;
  76. switch (imageFormat)
  77. {
  78. case TUIMG_FORMATS.TUFMT_PNG:
  79. fileName = fileName + ".png";
  80. break;
  81. case TUIMG_FORMATS.TUFMT_BMP:
  82. fileName = fileName + ".bmp";
  83. break;
  84. case TUIMG_FORMATS.TUFMT_TIF:
  85. fileName = fileName + ".tif";
  86. break;
  87. default:
  88. fileName = fileName + ".jpg";
  89. break;
  90. }
  91. return fileName;
  92. }
  93. public void Stop()
  94. {
  95. if (m_state != FrameProcesserState.STOP)
  96. {
  97. m_state = FrameProcesserState.STOP;
  98. m_camera.CallbackImageSave(this, true, m_imgList);
  99. }
  100. }
  101. public void Start()
  102. {
  103. m_state = FrameProcesserState.PLAY;
  104. }
  105. public void Pause()
  106. {
  107. m_state = FrameProcesserState.PAUSE;
  108. }
  109. public void Resume()
  110. {
  111. m_state = FrameProcesserState.PLAY;
  112. }
  113. public FrameProcesserState GetStatus()
  114. {
  115. return m_state;
  116. }
  117. }
  118. }