Example #1
0
        public Image GetImage(AnalyseRecord record)
        {
            Image imgRet = null;

            if (Task != null && record != null)
            {
                if (record.Image != null)
                {
                    // 不要与图片控件用同一个图片对象
                    // 图片控件上的图片可以自己回收
                    imgRet = record.Image.Clone() as Image;
                }
                else
                {
                    // string fileName = m_FileAccess.GetFileName(record.PicId);
                    record.Image = m_FileAccess.GetImage(record.PicId);
                    if (record.Image != null)
                    {
                        imgRet = record.Image.Clone() as Image;
                        Framework.Container.Instance.CacheManager.Register(record);
                    }
                }
            }

            return(imgRet);
        }
Example #2
0
        private void ShowFullImage(AnalyseRecord record)
        {
            Image imgFull = null;

            if (pictureEdit1.Image != null)
            {
                Image image = pictureEdit1.Image;
                pictureEdit1.Image = null;
                image.Dispose();
            }
            if (record != null && record.Image != null)
            {
                // 不要与图片控件用同一个图片对象
                // 图片控件上的图片可以自己回收
                imgFull = ResultPageViewModel.DecorateFullImage(record);
            }
            pictureEdit1.Image = imgFull;
            pictureEdit1.Properties.SizeMode = DevExpress.XtraEditors.Controls.PictureSizeMode.Clip;
            if (imgFull != null)
            {
                int x_rate = pictureEdit1.Width * 100 / imgFull.Width;
                int y_rate = pictureEdit1.Height * 100 / imgFull.Height;
                pictureEdit1.Properties.ZoomPercent = Math.Min(x_rate, y_rate);
            }
        }
        //internal AnalyseRecord GetNextVehicleByID(string vehicleid)
        //{
        //    if (m_Records != null && m_Records.Count > 0)
        //    {
        //        int id = m_Records.FindIndex(it => it.Id == vehicleid);
        //        if (id + 1 < m_Records.Count)
        //            return m_Records[id + 1];
        //        else
        //            return null;
        //    }
        //    else
        //        return null;
        //}

        //internal AnalyseRecord GetPrivVehicleByID(string vehicleid)
        //{
        //    if (m_Records != null && m_Records.Count > 0)
        //    {
        //        int id = m_Records.FindIndex(it => it.Id == vehicleid);
        //        if (id > 0)
        //            return m_Records[id - 1];
        //        else
        //            return null;
        //    }
        //    else
        //        return null;
        //}

        //internal bool IsCanNext(string vehicleid)
        //{
        //    if (m_Records != null && m_Records.Count > 0)
        //    {
        //        int id = m_Records.FindIndex(it => it.Id == vehicleid);
        //        return (id + 1 < m_Records.Count);
        //    }
        //    else
        //        return false;
        //}

        //internal bool IsCanPriv(string vehicleid)
        //{
        //    if (m_Records != null && m_Records.Count > 0)
        //    {
        //        int id = m_Records.FindIndex(it => it.Id == vehicleid);
        //        return (id >= 0);
        //    }
        //    else
        //        return false;
        //}

        #endregion

        #region Private helper functions

        //private void InitTable()
        //{
        //    m_DTAnalyseResults = new DataTable("AnalyseRecords");
        //    DataColumn columnId = m_DTAnalyseResults.Columns.Add("Id");
        //    //m_DTAnalyseResults.PrimaryKey = new DataColumn[] { columnId };

        //    m_DTAnalyseResults.Columns.Add("WatchTime");
        //    m_DTAnalyseResults.Columns.Add("FileName");
        //    m_DTAnalyseResults.Columns.Add("FullName");
        //    m_DTAnalyseResults.Columns.Add("PlateNumber");
        //    m_DTAnalyseResults.Columns.Add("PlateNumberReliability");
        //    m_DTAnalyseResults.Columns.Add("VehicleType", typeof(VehiclePropertyInfo));
        //    m_DTAnalyseResults.Columns.Add("DetailVehicleType", typeof(VehiclePropertyInfo));
        //    m_DTAnalyseResults.Columns.Add("Manufacturer");
        //    m_DTAnalyseResults.Columns.Add("ManufacturerReliability");
        //    m_DTAnalyseResults.Columns.Add("Brand", typeof(VehiclePropertyInfo));
        //    m_DTAnalyseResults.Columns.Add("Model", typeof(VehiclePropertyInfo));
        //    m_DTAnalyseResults.Columns.Add("VehicleColor", typeof(VehiclePropertyInfo));
        //    m_DTAnalyseResults.Columns.Add("PlateType", typeof(VehiclePropertyInfo));
        //    m_DTAnalyseResults.Columns.Add("PlateColor", typeof(VehiclePropertyInfo));

        //    m_DTAnalyseResults.Columns.Add("DriverBeltWearing", typeof(VehiclePropertyInfo));
        //    m_DTAnalyseResults.Columns.Add("CoDriverBeltWearing", typeof(VehiclePropertyInfo));
        //    m_DTAnalyseResults.Columns.Add("DriverPhoneCall", typeof(VehiclePropertyInfo));

        //    m_DTAnalyseResults.Columns.Add("DriverShielding", typeof(VehiclePropertyInfo));
        //    m_DTAnalyseResults.Columns.Add("CoDriverShielding", typeof(VehiclePropertyInfo));
        //    m_DTAnalyseResults.Columns.Add("CompareSimilarity", typeof(uint));

        //    m_DTAnalyseResults.Columns.Add("AnalyseRecord", typeof(AnalyseRecord));

        //    m_DTSummary = new DataTable("AnalyseRecord");
        //    m_DTSummary.Columns.Add("Name");
        //    m_DTSummary.Columns.Add("Value");

        //    // this.m_DTAnalyseResultsExport
        //    m_DTAnalyseResultsExport = new DataTable("AnalyseRecords4Export");
        //    columnId = m_DTAnalyseResultsExport.Columns.Add("Id");
        //    //m_DTAnalyseResultsExport.PrimaryKey = new DataColumn[] { columnId };

        //    m_DTAnalyseResultsExport.Columns.Add("WatchTime");
        //    m_DTAnalyseResultsExport.Columns.Add("FileName");
        //    m_DTAnalyseResultsExport.Columns.Add("FullName");
        //    m_DTAnalyseResultsExport.Columns.Add("PlateNumber");
        //    m_DTAnalyseResultsExport.Columns.Add("PlateNumberReliability");
        //    m_DTAnalyseResultsExport.Columns.Add("VehicleType", typeof(VehiclePropertyInfo));
        //    m_DTAnalyseResultsExport.Columns.Add("DetailVehicleType", typeof(VehiclePropertyInfo));
        //    m_DTAnalyseResultsExport.Columns.Add("Manufacturer");
        //    m_DTAnalyseResultsExport.Columns.Add("ManufacturerReliability");
        //    m_DTAnalyseResultsExport.Columns.Add("Brand", typeof(VehiclePropertyInfo));
        //    m_DTAnalyseResultsExport.Columns.Add("Model", typeof(VehiclePropertyInfo));

        //    m_DTAnalyseResultsExport.Columns.Add("ModelId");

        //    m_DTAnalyseResultsExport.Columns.Add("VehicleColor", typeof(VehiclePropertyInfo));
        //    m_DTAnalyseResultsExport.Columns.Add("PlateType", typeof(VehiclePropertyInfo));
        //    m_DTAnalyseResultsExport.Columns.Add("PlateColor", typeof(VehiclePropertyInfo));

        //    m_DTAnalyseResultsExport.Columns.Add("DriverBeltWearing", typeof(VehiclePropertyInfo));
        //    m_DTAnalyseResultsExport.Columns.Add("CoDriverBeltWearing", typeof(VehiclePropertyInfo));
        //    m_DTAnalyseResultsExport.Columns.Add("DriverPhoneCall", typeof(VehiclePropertyInfo));
        //    m_DTAnalyseResultsExport.Columns.Add("DriverShielding", typeof(VehiclePropertyInfo));
        //    m_DTAnalyseResultsExport.Columns.Add("CoDriverShielding", typeof(VehiclePropertyInfo));

        //    m_DTAnalyseResultsExport.Columns.Add("CompareSimilarity", typeof(uint));
        //    m_DTAnalyseResultsExport.Columns.Add("AnalyseRecord", typeof(AnalyseRecord));
        //}

        //private void UpdateSummaryTable()
        //{
        //    m_DTSummary.Rows.Clear();
        //    if (m_SelectedRecord != null)
        //    {
        //        string plateNumber = GetPlateNumber(m_SelectedRecord);

        //        string vehicleColor = string.Empty, plateColor = string.Empty;
        //        GetVehicleColor(m_SelectedRecord, ref vehicleColor, ref plateColor);

        //        m_DTSummary.Rows.Add(new object[] { "编号", m_SelectedRecord.Id });
        //        m_DTSummary.Rows.Add(new object[] { "过车时间", m_SelectedRecord.WatchTime.ToString(Constant.DATETIME_FORMAT) });
        //        m_DTSummary.Rows.Add(new object[] { "车牌号", plateNumber });
        //        m_DTSummary.Rows.Add(new object[] { "车型", m_SelectedRecord.VehicleTypeInfo == null ? "未识别" : m_SelectedRecord.VehicleTypeInfo.Name });
        //        m_DTSummary.Rows.Add(new object[] { "细分车型", m_SelectedRecord.DetailVehicleTypeInfo == null ? "未识别" : m_SelectedRecord.DetailVehicleTypeInfo.Name });
        //        m_DTSummary.Rows.Add(new object[] { "车身颜色", vehicleColor });

        //        VehiclePropertyInfo brand, model;
        //        GetVehicleBrandName(m_SelectedRecord, out brand, out model);

        //        m_DTSummary.Rows.Add(new object[] { "车品牌", brand });
        //        m_DTSummary.Rows.Add(new object[] { "车型号", model });

        //        m_DTSummary.Rows.Add(new object[] { "车牌颜色", plateColor });
        //        m_DTSummary.Rows.Add(new object[] { "主驾驶是否系安全带", m_SelectedRecord.DriverWearingSafeBelt });
        //        m_DTSummary.Rows.Add(new object[] { "副驾驶是否系安全带", m_SelectedRecord.CoDriverWearingSafeBelt });
        //        if (Framework.Environment.PhoneCallFeature)
        //        {
        //            m_DTSummary.Rows.Add(new object[] { "主驾驶是否打手机", m_SelectedRecord.DriverPhoneCalling });
        //        }
        //        m_DTSummary.Rows.Add(new object[] { "主驾驶是否有遮阳板", m_SelectedRecord.DriverSunlightShield });
        //        m_DTSummary.Rows.Add(new object[] { "副驾驶是否有遮阳板", m_SelectedRecord.CoDriverSunlightShield });

        //        m_DTSummary.Rows.Add(new object[] { "文件名", Path.GetFileName(m_SelectedRecord.PicPath) });
        //        m_DTSummary.Rows.Add(new object[] { "文件路径", m_SelectedRecord.PicPath });
        //    }
        //}

        //private string GetDriverWearingSafeBelt(AnalyseRecord analyseRecord)
        //{
        //    string sRet = "未识别";
        //    if (analyseRecord != null && analyseRecord.DriverWearingSafeBelt != null)
        //    {
        //        if (analyseRecord.DriverWearingSafeBelt.ID != 3)
        //        {
        //            sRet = analyseRecord.DriverWearingSafeBelt.Name;
        //        }
        //    }

        //    return sRet;
        //}

        private string GetPlateNumber(AnalyseRecord analyseRecord)
        {
            string plateNumber = string.Empty;

            if (analyseRecord != null)
            {
                plateNumber = analyseRecord.PlateNumber;
                if (analyseRecord.ErrorCode == 0)
                {
                    if (string.Compare(analyseRecord.PlateNumber, "11111111", true) == 0)
                    {
                        plateNumber = "无牌车";
                    }
                    if (string.Compare(analyseRecord.PlateNumber, "22222222", true) == 0)
                    {
                        plateNumber = "两轮车";
                    }
                }
                else if (analyseRecord.ErrorCode == -2)
                {
                    plateNumber = "未识别";
                }
                else
                {
                    plateNumber = "图片错误";
                }
            }
            return(plateNumber);
        }
        //private void GetVehicleBrandName(AnalyseRecord record, ref string brand, ref string model)
        //{
        //    brand =  "未识别" ;
        //    model =  "未识别" ;

        //    if (record.BrandInfo != null)
        //    {
        //        model = record.BrandInfo.Name;
        //        if (record.ParentBrandInfo != null)
        //        {
        //            brand = record.ParentBrandInfo.Name;
        //        }
        //        else
        //        {
        //            brand = string.Empty;
        //        }
        //    }
        //}

        private void GetVehicleBrandName(AnalyseRecord record, out VehiclePropertyInfo brand, out VehiclePropertyInfo model)
        {
            brand = Constant.PropertyInfo_UNKNOWN;
            model = Constant.PropertyInfo_UNKNOWN;

            if (record.BrandInfo != null)
            {
                if (record.ParentBrandInfo != null)
                {
                    if (record.ParentBrandInfo.ID == 999)
                    {
                        // 被归到其它车厂商的车, 车厂家设置成与车型一样
                        brand = model = record.BrandInfo;
                    }
                    else
                    {
                        brand = record.ParentBrandInfo;
                        model = record.BrandInfo;
                    }
                }
                else
                {
                    // brand = Constant.PropertyInfo_UNKNOWN;
                    brand = model = record.BrandInfo;
                }
            }
        }
        public Image GetImage(AnalyseRecord record)
        {
            Image imgRet = null;

            if (record != null)
            {
                if (record.Image != null)
                {
                    // 不要与图片控件用同一个图片对象
                    // 图片控件上的图片可以自己回收
                    imgRet = record.Image.Clone() as Image;
                }
                else
                {
                    // string fileName = m_FileAccess.GetFileName(record.PicId);
                    try
                    {
                        //record.Image = m_FileAccess.GetImage(record.PicPath);
                        record.Image = AppUtil.Common.Utils.GetImage(record.PicPath, Framework.Environment.URLEncodingType);
                    }
                    catch (Exception ex)
                    {
                        MyLog4Net.Container.Instance.Log.Error(string.Format("获取图片 {0} 出错", record.PicPath), ex);
                    }
                    if (record.Image != null)
                    {
                        imgRet = record.Image.Clone() as Image;
                        Framework.Container.Instance.CacheManager.Register(record);
                    }
                }
            }

            return(imgRet);
        }
        public static Image DecorateFullImage(AnalyseRecord record)
        {
            Image    imgFull = new Bitmap(record.Image);
            Graphics g       = Graphics.FromImage(imgFull);

            Rectangle rect;

            if (Framework.Environment.DrawPlateRect &&
                (rect = GetDecoRectangle(imgFull, record.PlateRegion)) != Rectangle.Empty)
            {
                g.DrawRectangle(new Pen(new SolidBrush(Color.Red), 3), rect);
            }

            if (Framework.Environment.DrawVehicleRect &&
                (rect = GetDecoRectangle(imgFull, record.VehicleRegion)) != Rectangle.Empty)
            {
                g.DrawRectangle(new Pen(new SolidBrush(Color.Purple), 4), rect);
            }

            if (Framework.Environment.DrawAILabelRect)
            {
                foreach (VehicleAnnualInspectionLabel item in record.AILabel)
                {
                    if ((rect = GetDecoRectangle(imgFull, item.AILabelRect)) != Rectangle.Empty)
                    {
                        g.DrawRectangle(new Pen(new SolidBrush(Color.Yellow), 2), rect);
                    }
                }
            }

            g.Dispose();
            return(imgFull);
        }
 private void ShowDriverImages(AnalyseRecord record)
 {
     if (Framework.Environment.ShowPeopleImg)
     {
         ShowDriverImage(picEditDriver, record, record.DriverRegion);
         ShowDriverImage(picEditCoDriver, record, record.CoDriverRegion);
     }
 }
 internal ViewResultImageViewModel(List <AnalyseRecord> records, int index)
 {
     m_Records  = records;
     m_PageInfo = new PageInfo(1, records.Count, index);
     m_PageInfo.SelectedPageNumberChanged += new EventHandler(PageInfo_SelectedPageNumberChanged);
     InitDataTable();
     m_SelectedRecord = m_Records[m_PageInfo.PageIndex];
     UpdateSummaryTable();
 }
Example #9
0
        private void UpdateUI()
        {
            AnalyseRecord record = m_ViewModel.SelectedAnalyseRecord;

            if (record != null)
            {
                new System.Threading.Thread(thDoUpdateImage).Start(record);
            }
            gridControl2.DataSource = m_ViewModel.DTSummary;
        }
Example #10
0
        private Image CutVehicleImage(AnalyseRecord record)
        {
            Image image = m_ViewModel.GetImage(record); // Image.FromFile(record.PicId);

            Rectangle cutRect = new Rectangle();

            if (image != null && record.PlateRegion != Rectangle.Empty)
            {
                cutRect = record.PlateRegion;
            }
            else if (image != null && record.VehicleRegion != Rectangle.Empty)
            {
                cutRect = record.VehicleRegion;
            }

            if (image != null && cutRect != Rectangle.Empty)
            {
                int xOffset1 = 10, xOffset2 = 10, yOffset1 = 10, yOffset2 = 10;
                if (cutRect.X < 10)
                {
                    xOffset1 = cutRect.X;
                }
                if (cutRect.Y < 10)
                {
                    yOffset1 = cutRect.Y;
                }

                int temp = image.Width - cutRect.X - cutRect.Width;
                if (temp < 10)
                {
                    xOffset2 = temp;
                }

                temp = image.Height - cutRect.Y - cutRect.Height;
                if (temp < 10)
                {
                    yOffset2 = temp;
                }

                int Height = cutRect.Height + yOffset1 + yOffset2;
                int Width  = cutRect.Width + xOffset1 + xOffset2;

                Rectangle rect = new Rectangle(cutRect.X - xOffset1, cutRect.Y - yOffset1, Width, Height);

                Bitmap   imgPlate = new Bitmap(Width, Height);
                Graphics g        = Graphics.FromImage(imgPlate);
                g.DrawImage(image, new Rectangle(0, 0, Width, Height), rect, GraphicsUnit.Pixel);
                g.Dispose();

                image = imgPlate;
            }

            return(image);
        }
        private void AddResultRow(DataTable dt, AnalyseRecord record)
        {
            string plateNumber = GetPlateNumber(record);
            // string brand = string.Empty, model = string.Empty;
            // GetVehicleBrandName(record, ref brand, ref model);
            VehiclePropertyInfo brand, model;

            GetVehicleBrandName(record, out brand, out model);

            string vehicleColor = string.Empty, plateColor = string.Empty;

            GetVehicleColor(record, ref vehicleColor, ref plateColor);


            dt.Rows.Add(new object[] {
                record.Id,                                           //id
                record.WatchTime.ToString(Constant.DATETIME_FORMAT), //WatchTime
                m_FileAccess.GetFileName(record.PicPath),            //FileName
                record.PicPath,                                      //FullName
                plateNumber,                                         //PlateNumber
                record.PlateNumberReliability,                       //PlateNumberReliability
                record.VehicleTypeInfo,                              //VehicleType
                record.CarTypeConf,                                  //CarTypeConf
                record.DetailVehicleTypeInfo,                        //DetailVehicleType
                record.CarTypeDetailConf,                            //CarTypeDetailConf
                brand,                                               //Brand,
                record.ManufacturerReliability,                      //ManufacturerReliability
                model,                                               //Model
                record.CarLabeDetailConf,                            //CarLabeDetailConf
                record.VehicleColorInfo,                             //VehicleColor
                record.CarColorConf,                                 //CarColorConf
                record.PlateTypeInfo,                                //PlateType
                record.PlateColorInfo,                               //PlateColor
                record.VehicleDirection,                             //VehicleDirection
                record.DriverWearingSafeBelt,                        //DriverBeltWearing
                record.DriverIsSafebeltConf,                         //DriverIsSafebeltConf
                record.DriverSunlightShield,                         //DriverShielding
                record.DriverIsSunVisorConf,                         //DriverIsSunVisorConf
                record.DriverPhoneCalling,                           //DriverPhoneCall
                record.DriverIsPhoneingConf,                         //DriverIsPhoneingConf
                record.CoDriverWearingSafeBelt,                      //CoDriverBeltWearing
                record.PassengerIsSafebeltCof,                       //PassengerIsSafebeltCof
                record.CoDriverSunlightShield,                       //CoDriverShielding
                record.PassengerIsSunVisorConf,                      //PassengerIsSunVisorConf
                record.ConsoleIsSomething,                           //ConsoleIsSomething
                record.ConsoleIsSomethingCof,                        //ConsoleIsSomethingCof
                record.IsPendant,                                    //IsPendant
                record.IsPendantCof,                                 //IsPendantCof
                record.AILabel.Count,
                record
            });
        }
Example #12
0
 private void ShowFullImage(AnalyseRecord record)
 {
     //Image imgFull = null;
     //if( record != null && record.Image != null)
     //{
     //    // 不要与图片控件用同一个图片对象
     //    // 图片控件上的图片可以自己回收
     //    imgFull = ResultPageViewModel.DecorateFullImage(record);
     //}
     //picEditOriginal.Properties.SizeMode = DevExpress.XtraEditors.Controls.PictureSizeMode.Zoom;
     //picEditOriginal.Image = imgFull;
     ucResultImage1.ShowImage(record);
 }
Example #13
0
        private void gridViewResults_FocusedRowChanged(object sender, DevExpress.XtraGrid.Views.Base.FocusedRowChangedEventArgs e)
        {
            DataRowView   rowView = gridViewResults.GetRow(e.FocusedRowHandle) as DataRowView;
            AnalyseRecord record  = null;

            if (rowView != null)
            {
                record = rowView["AnalyseRecord"] as AnalyseRecord;
            }
            m_ViewModel.SelectedAnalyseRecord = record;

            UpdateUI();
            FillupVehicleModels();
        }
Example #14
0
        private void ShowPlateImage(AnalyseRecord record)
        {
            Image image = null;

            if (record != null)
            {
                try
                {
                    image = CutVehicleImage(record);  //Image.FromFile(record.PicId);
                }catch (ArgumentException ex)
                {
                }
            }
            this.picEditThumb.Properties.SizeMode = DevExpress.XtraEditors.Controls.PictureSizeMode.Zoom;
            picEditThumb.Image = image;
        }
        private void GetVehicleColor(AnalyseRecord record, ref string vehicleColor, ref string plateColor)
        {
            vehicleColor =
                record.VehicleColorInfo != null ? record.VehicleColorInfo.Name : record.VehicleColor;
            plateColor =
                record.PlateColorInfo != null ? record.PlateColorInfo.Name : record.PlateColor;

            if (string.IsNullOrEmpty(vehicleColor))
            {
                vehicleColor = "未识别";
            }
            if (string.IsNullOrEmpty(plateColor))
            {
                plateColor = "未识别";
            }
        }
Example #16
0
        void UpdateImage(AnalyseRecord record)
        {
            if (InvokeRequired)
            {
                this.Invoke(new Action <AnalyseRecord>(UpdateImage), record);
            }
            else
            {
                Application.DoEvents();

                Trace.WriteLine(DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss,fff") + " UpdateImage 1");
                ShowPlateImage(record);
                ShowFullImage(record);
                ShowVehicleStandardImage(record);
                Trace.WriteLine(DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss,fff") + " UpdateImage 2");
            }
        }
Example #17
0
 private void AddRow(AnalyseRecord record)
 {
     m_DT.Rows.Add(new object[] {
         record.PlatformId,
         record.TaskId,
         record.AnalyseType,
         record.PicId,
         record.PicPath,
         record.ErrorCode,
         record.PlateNumber,
         record.PlateColor,
         record.VehicleType,
         record.DetailVehicleType,
         record.VehicleColor,
         record.Manufacturer,
         record.Type,
         record
     });
 }
Example #18
0
        internal void ShowDetails()
        {
            int           index  = 0;
            AnalyseRecord record = SelectedAnalyseRecord;

            if (record != null)
            {
                index = m_Records.IndexOf(record);
            }

            PageInfo pageInfo = new PageInfo(1, m_Records.Count, index);

            //DetailViewPageInfo.Index = index;

            //// 用using 在Clear的时候m_EditImageForm 为null
            m_EditImageForm             = new EditImageForm(m_FileAccess, m_Records, index);
            m_EditImageForm.FormClosed += new FormClosedEventHandler(EditImageForm_FormClosed);
            m_EditImageForm.ShowDialog();
        }
Example #19
0
 private void AddResultRow(DataTable dt, AnalyseRecord record)
 {
     dt.Rows.Add(new object[] {
         record.Id,
         m_FileAccess.GetFileName(record.PicId),
         record.PicId,
         record.PlateNumber,
         GetPlateNumberFromOther(m_FileAccess.GetFileName(record.PicId)),
         record.VehicleTypeInfo,
         record.DetailVehicleTypeInfo,
         record.Manufacturer,
         record.ParentBrandInfo,
         record.BrandInfo,
         record.VehicleColorInfo,
         record.PlateTypeInfo,
         record.PlateColorInfo,
         record
     });
 }
        private void btnSave_Click(object sender, EventArgs e)
        {
            AnalyseRecord record = CurrentRecord;

            //if (record == null || record.OriginalPic == null)
            //{
            //    return;
            //}

            string resourcename = "";
            string time         = "";

            foreach (Tuple <PropertyInfo, string> p in this.ucEditImageCtrl.Properties)
            {
                object obj = p.Item1.GetValue(record, null);

                if (p.Item2 == "所属源")
                {
                    resourcename = obj.ToString();
                }

                if (p.Item2 == "目标时间")
                {
                    time = obj.ToString();
                }
            }
            string FileName = resourcename.Replace(".", "_") + "结果" + time.Replace(":", "_").Replace(".", "_").Replace("/", "_") + ".jpg";

            // 保存文件
            Trace.WriteLine("btnSave_Click, FileName:" + FileName);
            Bitmap   pic = new Bitmap(this.ucEditImageCtrl.OriginalImage.Width, this.ucEditImageCtrl.OriginalImage.Height);
            Graphics g   = Graphics.FromImage(pic);

            g.DrawImage(this.ucEditImageCtrl.OriginalImage, 0, 0,
                        ucEditImageCtrl.OriginalImage.Width, ucEditImageCtrl.OriginalImage.Height);

            pic.Save(FileName, ImageFormat.Jpeg);
            pic.Dispose();

            System.IO.FileInfo temp = new System.IO.FileInfo(FileName);
            int hrItem = (int)DateTime.Now.Ticks;
        }
        private void CopyImages(string fullPath)
        {
            if (m_DTAnalyseResults != null && m_DTAnalyseResults.Rows != null)
            {
                string fileName;
                Image  image;

                float progressPerFile = 0.8f / (float)m_DTAnalyseResults.Rows.Count;
                int   i = 0;

                foreach (DataRow row in m_DTAnalyseResults.Rows)
                {
                    i++;
                    AnalyseRecord record = row["AnalyseRecord"] as AnalyseRecord;

                    if (record != null)
                    {
                        m_StatusDlg.UpdateStatusText(string.Format("保存图片 {0} ...", record.PicPath));
                        m_StatusDlg.UpdateProgress(0.2f + progressPerFile * i);
                        try
                        {
                            fileName = m_FileAccess.GetFileName(record.PicPath);
                            fileName = Path.Combine(fullPath, fileName);

                            if (m_FileAccess is LocalFileAccess)
                            {
                                File.Copy(record.PicPath, fileName);
                            }
                            else
                            {
                                image = AppUtil.Common.Utils.GetImage(record.PicPath, Framework.Environment.URLEncodingType);
                                CopyImage(image, fileName);
                            }
                        }
                        catch (Exception ex)
                        {
                            MyLog4Net.Container.Instance.Log.Error(string.Format("导出文件 {0} 出错", record.PicPath), ex);
                        }
                    }
                }
            }
        }
Example #22
0
        private void ShowVehicle()
        {
            int i = 0;

            for (i = 0; i < Math.Min(24, m_noGroupViewModel.CurrPageRecords.Count); i++)
            {
                ucSingleResult r = tableLayoutPanel2.Controls[i] as ucSingleResult;
                r.Visible = true;
                AnalyseRecord tmp = m_noGroupViewModel.CurrPageRecords[i];
                m_noGroupViewModel.GetThumbImage(tmp);
                r.SetVehicle(tmp);
            }

            for (int j = i; j < 24; j++)
            {
                ucSingleResult r = tableLayoutPanel2.Controls[j] as ucSingleResult;
                r.SetVehicle(null);
                r.Visible = false;
            }
        }
        private void gridView1_FocusedRowChanged(object sender, DevExpress.XtraGrid.Views.Base.FocusedRowChangedEventArgs e)
        {
            DataRowView rowView = gridView1.GetRow(e.FocusedRowHandle) as DataRowView;

            if (rowView != null)
            {
                AnalyseRecord record = rowView["AnalyseRecord"] as AnalyseRecord;
                Image         image  = null;
                if (record != null)
                {
                    image = CutVehicleImage(record);  //Image.FromFile(record.PicId);
                }
                this.picEditThumb.Properties.SizeMode = DevExpress.XtraEditors.Controls.PictureSizeMode.Zoom;
                picEditThumb.Image = image;
                m_ViewModel.SelectedAnalyseRecord = record;
            }
            else
            {
                picEditThumb.Image = null;
            }
        }
        private void ShowDriverImage(PictureEdit picEdit, AnalyseRecord record, Rectangle region)
        {
            Image image = null;

            if (picEdit.Image != null)
            {
                Image imageTmp = picEdit.Image;
                picEdit.Image = null;
                imageTmp.Dispose();
            }

            if (record != null && record.Image != null)
            {
                if (record.ErrorCode == 0 && !region.Equals(Rectangle.Empty))
                {
                    image = ClipImage(record.Image, region);
                }
            }

            picEdit.Properties.SizeMode = DevExpress.XtraEditors.Controls.PictureSizeMode.Zoom;
            picEdit.Image = image;
        }
        public Image GetThumbImage(AnalyseRecord record)
        {
            Image imgRet = null;

            if (record != null)
            {
                if (record.ThumbImg != null)
                {
                    // 不要与图片控件用同一个图片对象
                    // 图片控件上的图片可以自己回收
                    imgRet = record.ThumbImg.Clone() as Image;
                }
                else
                {
                    // string fileName = m_FileAccess.GetFileName(record.PicId);
                    try
                    {
                        //Image img = WinFormAppUtil.Common.Utils.GetImage(record.PicPath);
                        //record.ThumbImg = WinFormAppUtil.Common.Utils.CutImage(img, record.VehicleRegion);
                        record.ThumbImg = Framework.Container.Instance.TaskManager.GetThumbImg(record);
                        //record.PlateImg = Framework.Container.Instance.TaskManager.GetPlateImg(record);
                    }
                    catch (Exception ex)
                    {
                        MyLog4Net.Container.Instance.Log.Error(string.Format("获取图片 {0} 出错", record.PicPath), ex);
                    }
                    if (record.ThumbImg != null)
                    {
                        imgRet = record.ThumbImg.Clone() as Image;
                        Framework.Container.Instance.CacheManager.Register(record);
                    }
                }
            }

            return(imgRet);
        }
        internal void ShowImage( AnalyseRecord record)
        {
            Image imgFull = null;
            if (record.Image != null)
            {
                // 不要与图片控件用同一个图片对象
                // 图片控件上的图片可以自己回收
                imgFull = new Bitmap(record.Image);
            }
            else
            {
                record.Image = AppUtil.Common.Utils.GetImage(record.PicPath, Framework.Environment.URLEncodingType);
                if (record.Image != null)
                {
                    imgFull = new Bitmap(record.Image);
                    Framework.Container.Instance.CacheManager.Register(record);
                }
            }

            if (imgFull == null)
            {
                return;
            }
                 
            if (record.PlateRegion != Rectangle.Empty)
            {
                int xOffset1 = 10, xOffset2 = 10, yOffset1 = 10, yOffset2 = 10;
                if (record.PlateRegion.X < 10)
                {
                    xOffset1 = record.PlateRegion.X;
                }
                if (record.PlateRegion.Y < 10)
                {
                    yOffset1 = record.PlateRegion.Y;
                }

                int temp = imgFull.Width - record.PlateRegion.X - record.PlateRegion.Width;
                if (temp < 10)
                {
                    xOffset2 = temp;
                }

                temp = imgFull.Height - record.PlateRegion.Y - record.PlateRegion.Height;
                if (temp < 10)
                {
                    yOffset2 = temp;
                }
                
                int Height = record.PlateRegion.Height + yOffset1 + yOffset2;
                int Width = record.PlateRegion.Width + xOffset1 + xOffset2;
                Rectangle rect = new Rectangle(record.PlateRegion.X - xOffset1, record.PlateRegion.Y - yOffset1, Width, Height);

                Bitmap imgPlate = new Bitmap(Width, Height);

                Graphics g = Graphics.FromImage(imgPlate);

                g.DrawImage(imgFull, new Rectangle(0, 0, Width, Height), rect, GraphicsUnit.Pixel);
                g.Dispose();

                this.picEditThumb.Properties.SizeMode = DevExpress.XtraEditors.Controls.PictureSizeMode.Zoom;
                this.picEditThumb.Image = imgPlate;

                g = Graphics.FromImage(imgFull);
                g.DrawRectangle(new Pen(new SolidBrush(Color.Red), 2), rect);
                g.Dispose();
            }
                        
            OriginalImage = imgFull;
            AutoFit();
        }
 void PageInfo_SelectedPageNumberChanged(object sender, EventArgs e)
 {
     m_SelectedRecord = m_Records[m_PageInfo.PageIndex];
     UpdateSummaryTable();
 }
 public void ShowImage(AnalyseRecord record)
 {
     m_Record = record;
     ShowFullImage(m_Record);
     ShowDriverImages(m_Record);
 }
        private Image CutVehicleImage(AnalyseRecord record)
        {
            Image image = m_ViewModel.GetImage(record); // Image.FromFile(record.PicId);

            if (image != null && record.PlateRegion != Rectangle.Empty)
            {
                int width  = record.PlateRegion.Width;
                int height = record.PlateRegion.Height;

                int x = record.PlateRegion.Left - 4 * width;
                int y = record.PlateRegion.Bottom - 10 * height;

                int xOffset1 = 3 * width, xOffset2 = 2 * width, yOffset1 = 4 * height, yOffset2 = 25 * height;

                if (record.VehicleTypeInfo != null)
                {
                    if (record.VehicleTypeInfo.ID == 2)
                    {
                        // 中车
                        yOffset2 = 40 * height;
                    }
                    if (record.VehicleTypeInfo.ID == 3)
                    {
                        yOffset2 = 60 * height;
                        xOffset2 = (int)(4 * width);
                        xOffset1 = 4 * width;
                    }
                }

                if (record.PlateRegion.X < xOffset1)
                {
                    // left
                    xOffset1 = record.PlateRegion.X;
                }
                if (record.PlateRegion.Y < yOffset2)
                {
                    // top
                    yOffset2 = record.PlateRegion.Y;
                }

                int temp = image.Width - record.PlateRegion.X - record.PlateRegion.Width;
                if (temp < xOffset2)
                {
                    xOffset2 = temp;
                }

                temp = image.Height - record.PlateRegion.Y - record.PlateRegion.Height;
                if (temp < yOffset1)
                {
                    yOffset1 = temp;
                }

                int       Height = record.PlateRegion.Height + yOffset1 + yOffset2;
                int       Width  = record.PlateRegion.Width + xOffset1 + xOffset2;
                Rectangle rect   = new Rectangle(record.PlateRegion.X - xOffset1, record.PlateRegion.Y - yOffset2, Width, Height);

                Bitmap imgVehicle = new Bitmap(Width, Height);

                Graphics g = Graphics.FromImage(imgVehicle);

                g.DrawImage(image, new Rectangle(0, 0, Width, Height), rect, GraphicsUnit.Pixel);
                g.Dispose();

                image = imgVehicle;
            }

            return(image);
        }
Example #30
0
        private void RetrieveSettings()
        {
            m_DTResult2DriverBeltWear = new Dictionary <string, Tuple <int, int, int> >();
            if (File.Exists(m_FileName))
            {
                StreamReader sr   = File.OpenText(m_FileName);
                string       line = sr.ReadLine();

                string               msg   = string.Empty;
                List <string>        files = new List <string>();
                string[]             segs;
                string               fileName;
                int                  driverSaftBeltWearing;
                int                  coDriverSaftBeltWearing;
                int                  driverPhoneCalling;
                AnalyseRecord        record;
                List <AnalyseRecord> records;
                int                  i = 0;
                while (line != null)
                {
                    line = line.Trim();
                    if (!line.StartsWith("'") && !line.StartsWith("--"))
                    {
                        segs = line.Split(CHARS_SPLIT, StringSplitOptions.RemoveEmptyEntries);
                        if (segs != null && segs.Length == 11)
                        {
                            fileName = segs[10].ToLower().Trim();
                            if (!m_DTFile2Results.ContainsKey(fileName))
                            {
                                records = new List <AnalyseRecord>();
                                m_DTFile2Results.Add(fileName, records);
                            }
                            else
                            {
                                records = m_DTFile2Results[fileName];
                            }
                            record                   = new AnalyseRecord();
                            record.PlateNumber       = segs[0].Trim();
                            record.VehicleType       = segs[1].Trim();
                            record.DetailVehicleType = segs[2].Trim();
                            record.VehicleColor      = segs[3].Trim();
                            record.ParentBrandInfo   = new VehiclePropertyInfo()
                            {
                                ID = -1, Name = segs[4].Trim()
                            };
                            record.BrandInfo = new VehiclePropertyInfo()
                            {
                                ID = -1, Name = segs[5].Trim()
                            };
                            record.PlateColor            = segs[6].Trim();
                            record.DriverWearingSafeBelt = new VehiclePropertyInfo {
                                ID = -1, Name = segs[7].Trim()
                            };
                            record.CoDriverWearingSafeBelt = new VehiclePropertyInfo {
                                ID = -1, Name = segs[8].Trim()
                            };
                            record.DriverPhoneCalling = new VehiclePropertyInfo {
                                ID = -1, Name = segs[9].Trim()
                            };
                            record.PicPath = fileName;
                            record.Id      = (i++).ToString();
                            records.Add(record);
                            m_Records.Add(record);
                        }
                    }
                    line = sr.ReadLine();
                }
                sr.Close();
                sr.Dispose();
            }
        }