using Common; using MeterPlugInLibrary; using System; using System.Collections.Generic; using System.Drawing; using System.IO; using System.Linq; using System.Text; using System.Threading.Tasks; namespace CarMeterSystem.OptionCls { /// /// 截图调用类 /// public class CameraShotCls { private Log lg = Log.GetInstance(); //写日志 public void Connection() { try { foreach (DhCameraShot shot in CarCache.cameraShots) { shot.Connection(); } } catch (Exception ex) { lg.WriteLog(39, ex.Message); } } public void Close() { try { foreach (DhCameraShot shot in CarCache.cameraShots) { shot.Close(); } } catch (Exception ex) { lg.WriteLog(39, ex.Message); } } /// /// 截图 /// /// 作业编号 public void CapPic(string actualFirstNo) { try { int iCnt = 1; //抓拍摄像头配置顺序必须是前面2个 foreach (DhCameraShot shot in CarCache.cameraShots) { //放在tempImg文件夹下面就进行图片的压缩操作,否则不进行图片压缩 //shot.CapPic(iCnt < 3 ? 0 : 1, PbCache.path + string.Format("\\imgShort\\tempImg\\{0}_{1}_{2}.jpg", PbCache.sportInfo.baseSpotNo, "C" + actualFirstNo, iCnt)); shot.CapPic(iCnt < 2 ? 0 : 1, PbCache.path + string.Format("\\imgShort\\formalImg\\{0}_{1}_{2}.jpg", PbCache.sportInfo.baseSpotNo, "C" + actualFirstNo, iCnt)); ZipFiles(PbCache.path + string.Format("\\imgShort\\formalImg\\{0}_{1}_{2}.jpg", PbCache.sportInfo.baseSpotNo, "C" + actualFirstNo, iCnt)); // 第一次抓拍为仪表重量 //if(iCnt == 1) //{ // Log.GetInstance().WriteLog(35, "完成仪表拍照 成功标识:" + PbCache.shotSuccess.ToString() + "车号:" + PbCache.lockCarNo + ";重量:" + PbCache.lockWgt + ";时间:" + DateTime.Now.ToLongTimeString()); //} iCnt++; } } catch (Exception ex) { lg.WriteLog(39,ex.Message); } } private void ZipFiles(String fn) { ImageZip iz = new ImageZip(); if (string.IsNullOrEmpty(fn)) return; if (!File.Exists(fn)) return; //临时目录图片压缩后存储与正式目录 string jpgFile = fn.Replace("tempImg", "temp"); Image img = ImageZip.BytesToBitmap(ImageZip.ZipImageByte(fn)); if (img != null) { //压缩图片并保存 if(img.Width > AppConfigCache.imgWidth && img.Height > AppConfigCache.imgHeight) { img.Save(jpgFile); // BourneCao 20221220 使用以下方法继续压缩,比原图还要大 //iz.ResourceImage = img; //iz.GetReducedImage(AppConfigCache.imgWidth, AppConfigCache.imgHeight).Save(jpgFile); } else { img.Save(jpgFile); } File.Delete(fn);//删除临时目录数据 } //else //{ // iz.ResourceImage = img; // //压缩图片并保存 // iz.GetReducedImage(400, 400).Save(jpgFile); // //File.Move(fn, jpgFile); //} } /// /// 从硬盘录像机 进行截图 /// /// public void CapPicFromVideo(string actualFirstNo) { try { foreach (DhCameraShot shot in CarCache.cameraShots) { //放在tempImg文件夹下面就进行图片的压缩操作,否则不进行图片压缩 //shot.CapPic(iCnt < 3 ? 0 : 1, PbCache.path + string.Format("\\imgShort\\tempImg\\{0}_{1}_{2}.jpg", PbCache.sportInfo.baseSpotNo, "C" + actualFirstNo, iCnt)); bool shotSuccess = shot.CapPicFromVedio(PbCache.path + string.Format("\\imgShort\\formalImg\\{0}_{1}_", PbCache.sportInfo.baseSpotNo, "C" + actualFirstNo)); PbCache.shotSuccess = shotSuccess; } } catch (Exception ex) { lg.WriteLog(39, ex.Message); } } /// /// 连接视频截图并关闭 /// /// 作业编号 public void CapMethod(string actualFirstNo) { Connection(); CapPic(actualFirstNo); //CapPicFromVideo(actualFirstNo); Close(); } } }