using System; using System.Collections.Generic; using TUCAMAPI; namespace TUCamera { class TUCameraImageSaveFixedNumber : TUCameraIFrameProcess { private TUCamera m_camera; private FrameProcesserState m_state = FrameProcesserState.STOP; private DateTimeTools m_tools = null; private int m_count; private string m_savePath; private string m_imagePrefix; private TUIMG_FORMATS m_imageFormat; public List m_imgList = new List(); /// /// 拍摄固定张数图片 /// /// 文件保存路径 /// 文件名前缀 /// 文件保存格式 /// 时间间隔 /// 拍摄次数 /// 拍摄完成的图片List public TUCameraImageSaveFixedNumber(TUCamera camera, string savePath, string imagePrefix, TUIMG_FORMATS imageFormat, UInt64 timeLapseMs, int count) { m_camera = camera; m_savePath = savePath; m_imagePrefix = imagePrefix; m_imageFormat = imageFormat; m_count = count; m_tools = new DateTimeTools(timeLapseMs); if (!System.IO.Directory.Exists(m_savePath)) { System.IO.Directory.CreateDirectory(m_savePath);//不存在就创建目录 } } public void DoProcess(ref TUCAM_FRAME frame) { if (m_state != FrameProcesserState.PLAY) { return; } if (m_tools.Timeout()) { m_tools.Restart(); DateTime now = DateTime.Now; string fileName = m_savePath + "\\" + m_imagePrefix + now.ToString("yyyyMMddHHmmssfff"); bool result = m_camera.SaveImage(ref frame, fileName, m_imageFormat); if (result) { m_imgList.Add(creatImageName(fileName, m_imageFormat)); if (m_count > 0) { m_count--; } } if (m_count <= 0) { Stop(); } } } public void Stop() { if (m_state != FrameProcesserState.STOP) { m_state = FrameProcesserState.STOP; m_camera.CallbackImageSave(this, true, m_imgList); } } public void Start() { m_state = FrameProcesserState.PLAY; } public void Pause() { m_state = FrameProcesserState.PAUSE; } public void Resume() { m_state = FrameProcesserState.PLAY; } public FrameProcesserState GetStatus() { return m_state; } private string creatImageName(string fileName, TUIMG_FORMATS imageFormat) { // string fileName = fileName; switch (imageFormat) { case TUIMG_FORMATS.TUFMT_PNG: fileName = fileName + ".png"; break; case TUIMG_FORMATS.TUFMT_BMP: fileName = fileName + ".bmp"; break; case TUIMG_FORMATS.TUFMT_TIF: fileName = fileName + ".tif"; break; default: fileName = fileName + ".jpg"; break; } return fileName; } } }