TUCameraImageSaveFixedNumber.cs 3.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121
  1. using System;
  2. using System.Collections.Generic;
  3. using TUCAMAPI;
  4. namespace TUCamera
  5. {
  6. class TUCameraImageSaveFixedNumber : TUCameraIFrameProcess
  7. {
  8. private TUCamera m_camera;
  9. private FrameProcesserState m_state = FrameProcesserState.STOP;
  10. private DateTimeTools m_tools = null;
  11. private int m_count;
  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="timeLapse">时间间隔</param>
  23. /// <param name="count">拍摄次数</param>
  24. /// <param name="imgList">拍摄完成的图片List</param>
  25. public TUCameraImageSaveFixedNumber(TUCamera camera, string savePath, string imagePrefix, TUIMG_FORMATS imageFormat, UInt64 timeLapseMs, int count)
  26. {
  27. m_camera = camera;
  28. m_savePath = savePath;
  29. m_imagePrefix = imagePrefix;
  30. m_imageFormat = imageFormat;
  31. m_count = count;
  32. m_tools = new DateTimeTools(timeLapseMs);
  33. if (!System.IO.Directory.Exists(m_savePath))
  34. {
  35. System.IO.Directory.CreateDirectory(m_savePath);//不存在就创建目录
  36. }
  37. }
  38. public void DoProcess(ref TUCAM_FRAME frame)
  39. {
  40. if (m_state != FrameProcesserState.PLAY)
  41. {
  42. return;
  43. }
  44. if (m_tools.Timeout())
  45. {
  46. m_tools.Restart();
  47. DateTime now = DateTime.Now;
  48. string fileName = m_savePath + "\\" + m_imagePrefix + now.ToString("yyyyMMddHHmmssfff");
  49. bool result = m_camera.SaveImage(ref frame, fileName, m_imageFormat);
  50. if (result)
  51. {
  52. m_imgList.Add(creatImageName(fileName, m_imageFormat));
  53. if (m_count > 0)
  54. {
  55. m_count--;
  56. }
  57. }
  58. if (m_count <= 0)
  59. {
  60. Stop();
  61. }
  62. }
  63. }
  64. public void Stop()
  65. {
  66. if (m_state != FrameProcesserState.STOP)
  67. {
  68. m_state = FrameProcesserState.STOP;
  69. m_camera.CallbackImageSave(this, true, m_imgList);
  70. }
  71. }
  72. public void Start()
  73. {
  74. m_state = FrameProcesserState.PLAY;
  75. }
  76. public void Pause()
  77. {
  78. m_state = FrameProcesserState.PAUSE;
  79. }
  80. public void Resume()
  81. {
  82. m_state = FrameProcesserState.PLAY;
  83. }
  84. public FrameProcesserState GetStatus()
  85. {
  86. return m_state;
  87. }
  88. private string creatImageName(string fileName, TUIMG_FORMATS imageFormat)
  89. {
  90. // string fileName = fileName;
  91. switch (imageFormat)
  92. {
  93. case TUIMG_FORMATS.TUFMT_PNG:
  94. fileName = fileName + ".png";
  95. break;
  96. case TUIMG_FORMATS.TUFMT_BMP:
  97. fileName = fileName + ".bmp";
  98. break;
  99. case TUIMG_FORMATS.TUFMT_TIF:
  100. fileName = fileName + ".tif";
  101. break;
  102. default:
  103. fileName = fileName + ".jpg";
  104. break;
  105. }
  106. return fileName;
  107. }
  108. }
  109. }