Beispiel #1
0
    public override void SetParent(UIObj p)
    {
        ParentObj = p;
        transform.SetParent(p.transform);
        p.AddChild(this);

        if (!trans)
        {
            trans = this.transform as RectTransform;
        }

        trans.anchorMax        = Vector2.one;  //_anchorpoint.anchorMax;
        trans.anchorMin        = Vector2.zero; //_anchorpoint.anchorMin;
        trans.anchoredPosition = Vector2.zero; //_anchorpoint.anchoredPosition;
        trans.sizeDelta        = Vector2.zero; //_anchorpoint.sizeDelta;

        if (p is FaceObj)
        {
            FaceObj f = p as FaceObj;
            if (f.FaceParent)
            {
                SetFaceParent(f.FaceParent);
            }
        }
    }
        public TempleteInfoPopViewModel()
        {
            _FaceObj = new FaceObj();
            //初始化模版姓名
            Name = "";
            //初始化标题
            Title = "";
            //初始化ID
            Id = "";
            //初始化年龄
            Age = "";
            //初始化导入时间
            ImportTime = "";
            //初始化备注
            Remark = "";
            //初始化模版类型
            Type         = thirft.QueryDefFaceObjType();
            SelectedType = 0;

            //初始化模版性别
            SelectedSex = 0;
            Sex         = new List <string> {
                "未知", "男", "女"
            };
        }
Beispiel #3
0
    public void SetFace(FaceObj f)
    {
        Face = f;

        Face.Init(0, null);
        Face.Reset(Info.Base);
        (Face.Child[0] as FaceObj).SetInfo(Info.Eye, Info.Eye.Obj);
        (Face.Child[1] as FaceObj).SetInfo(Info.Eye, Info.Eye.Obj);
        (Face.Child[2] as FaceObj).SetInfo(Info.Ear, Info.Ear.Obj);
        (Face.Child[3] as FaceObj).SetInfo(Info.Ear, Info.Ear.Obj);
        (Face.Child[4] as FaceObj).SetInfo(Info.Brow, Info.Brow.Obj);
        (Face.Child[5] as FaceObj).SetInfo(Info.Brow, Info.Brow.Obj);
        (Face.Child[6] as FaceObj).SetInfo(Info.Hair, Info.Hair.Obj);
        (Face.Child[8] as FaceObj).SetInfo(Info.Nose, Info.Nose.Obj);
        (Face.Child[7] as FaceObj).SetInfo(Info.Jaw, Info.Jaw.Obj);

        Face.Child[0][0].Svg[1].transform.localScale = Info.PupilScale;
        Face.Child[1][0].Svg[1].transform.localScale = Info.PupilScale;
        Face.Child[0][0].Svg[1].color = Info.C_Eye;
        Face.Child[1][0].Svg[1].color = Info.C_Eye;

        Face.Child[7][0].Svg[1].transform.SetParent(Face.Svg[1].transform);
        Face.Child[2][0].Svg[1].color = Info.C_Offset;
        Face.Child[3][0].Svg[1].color = Info.C_Offset;
    }
Beispiel #4
0
 public void CreateAnchor(int num, FaceObj o)
 {
     if (_obj == null || _obj.Length == 0)
     {
         _obj = new FaceObj[Child.Length];
     }
     _obj[num] = (FaceObj)Instantiate(o);
     _obj[num].SetAnchorPoint(Child[num] as FaceObj);
 }
Beispiel #5
0
    public GreatGrand Randomise()
    {
        GreatGrand final = (GreatGrand)Instantiate(GGObj);

        final.Generate(0);

        FaceObj _base = RandomiseFace(final);

        final.SetFace(_base);
        TitleObj.text = final.Data.Info.Name + "\nAge " + final.Data.Age.Value;
        return(final);
    }
 public TempleteInfoPopViewModel()
 {
     ThriftServiceNameSpace.ThriftService thirft = new ThriftServiceNameSpace.ThriftService();
     _FaceObj = new FaceObj();
     //初始化模版类型
     Type         = thirft.QueryDefFaceObjType();
     SelectedType = 0;
     //初始化模版性别
     Sex = new List <string>()
     {
         "未知", "男", "女"
     };
 }
Beispiel #7
0
    public FaceObj GenerateFace(GreatGrand targ)
    {
        GameObject _base = (GameObject)Instantiate(targ.Data.Info.Base.Obj);

        FaceObj final = _base.GetComponent <FaceObj>();

        final.SetSkinColor(targ.Data.Info.C_Skin);
        final.SetHairColor(targ.Data.Info.C_Hair);
        final.SetOffsetColor(targ.Data.Info.C_Offset);
        final.SetNoseColor(targ.Data.Info.C_Nose);

        targ.SetFace(final);
        final._Name = targ.Data.Info.Name;
        _base.name  = targ.Data.Info.Name;
        return(final);
    }
Beispiel #8
0
    public void ResetFace(FaceObj f)
    {
        f.SetSkinColor(Info.C_Skin);
        f.SetHairColor(Info.C_Hair);
        f.SetOffsetColor(Info.C_Offset);

        f.Reset(Info.Base);
        (f[0][0] as FaceObj).Reset(Info.Eye);
        (f[1][0] as FaceObj).Reset(Info.Eye);
        (f[2][0] as FaceObj).Reset(Info.Ear);
        (f[3][0] as FaceObj).Reset(Info.Ear);
        (f[4][0] as FaceObj).Reset(Info.Brow);
        (f[5][0] as FaceObj).Reset(Info.Brow);
        (f[6][0] as FaceObj).Reset(Info.Hair);
        (f[8][0] as FaceObj).Reset(Info.Nose);
        (f[7][0] as FaceObj).Reset(Info.Jaw);
    }
        public void ReadExcel(ref FaceObj _FaceObj, System.IO.FileInfo[] files)
        {
            try
            {
                #region
                //遍历文件
                for (int i = 0; i < files.Length; i++)
                {
                    string strPathName = (files[i].DirectoryName + "\\" + files[i].Name);
                    if (!File.Exists(strPathName))
                    {
                        //MB_MODULES.Views.MyMessage.showYes("文件不存在!");
                        MB_MODULES.Views.MyMessage.showYes("文件不存在");
                        return;
                    }

                    try//捕获Excel异常
                    {
                        using (var far = new FileStream(strPathName, FileMode.Open, FileAccess.Read))
                        {
                            XSSFWorkbook xBook = new XSSFWorkbook(far);
                            int          x     = xBook.GetCTWorkbook().sheets.sheet.Count;
                            for (int o = 0; o < x; o++)
                            {
                                //ReadSheetFromExcel(xBook, o, ref _FaceObj);
                                far.Close();
                            }
                        }
                    }
                    catch (Exception ex)
                    {
                        Logger <OperaExcel> .Log.Error("ReadExcel", ex);

                        return;
                    }
                }
                #endregion
            }
            catch (Exception ex)
            {
                Logger <OperaExcel> .Log.Error("ReadExcel", ex);

                //System.Windows.MessageBox.Show(ex.Message);
            }
        }
Beispiel #10
0
    public FaceObj RandomiseFace(GreatGrand f)
    {
        /*Eye.Randomise(Vector3.zero);
         * Brow.Randomise(Vector3.zero);
         * Ear.Randomise(Vector3.zero);
         * Jaw.Randomise(Vector3.zero, 0.0F);
         * Hair.Randomise(Vector3.zero, 0.0F, 0.0F);
         * Nose.Randomise(Vector3.zero);
         * Base.Randomise(Vector3.zero, 0.0F, 0.15F);*/

        SkinCurrent   = SkinGrad.Evaluate(Random.value);
        HairCurrent   = HairGrad.Evaluate(Random.value);
        OffsetCurrent = Random.ColorHSV();

        FaceObj fin = GenerateFace(f);

        //CheckDifferences(fin);
        return(fin);
    }
Beispiel #11
0
    public FaceObj CloneFace()
    {
        FaceObj final = (FaceObj)Instantiate(Face);

        final.Init(0, null);

        final.SetSkinColor(Info.C_Skin);
        final.SetHairColor(Info.C_Hair);
        final.SetOffsetColor(Info.C_Offset);

        /*final.Reset(Info.Base);
         * (final[0] as FaceObj).SetInfo(Info.EyeLeft);
         * (final[1] as FaceObj).SetInfo((Info.EyeRight));
         * (final[2] as FaceObj).SetInfo((Info.EarLeft));
         * (final[3] as FaceObj).SetInfo((Info.EarRight));
         * (final[4] as FaceObj).SetInfo((Info.BrowLeft));
         * (final[5] as FaceObj).SetInfo((Info.BrowRight));
         * (final[6] as FaceObj).SetInfo((Info.Hair));
         * (final[8] as FaceObj).SetInfo((Info.Nose));
         * (final[7] as FaceObj).SetInfo((Info.Jaw));*/
        return(final);
    }
Beispiel #12
0
    public void GetObjInfo(FaceObjInfoContainer f = null, bool side = true)
    {
        if (f != null)
        {
            if (Element == null || Index != f.Current.Index)
            {
                if (Element != null)
                {
                    DestroyImmediate(Element.gameObject);
                }
                Element = Instantiate(f.Current.Prefab).GetComponent <FaceObj>();
                Element.transform.SetParent(this.transform);
                //Element.GetComponent<RectTransform>().anchorMax = Vector3.one;
                //Element.GetComponent<RectTransform>().sizeDelta = Vector3.zero;
                Child    = new UIObj[1];
                Child[0] = Element;
                Index    = f.Current.Index;
            }
            //Info = f;

            //SetInfo(f.Current, null, side);
        }
    }
Beispiel #13
0
 public void SetFaceParent(FaceObj f)
 {
     FaceParent = f;
     Reset();
 }
Beispiel #14
0
        private void StartExcelImport(object filePathObj)
        {
            string    filePath = @"C:\Users\Tsu\Desktop\2个插件\测试.xls";
            IWorkbook workbook = null;
            ISheet    sheet    = null;

            try
            {
                var fs = new FileStream(filePath, FileMode.Open, FileAccess.Read);
                if (filePath.IndexOf(".xlsx") > 0) // 2007版本
                {
                    workbook = new XSSFWorkbook(fs);
                }
                else if (filePath.IndexOf(".xls") > 0) // 2003版本
                {
                    workbook = new HSSFWorkbook(fs);
                }
                if (sheet == null) //取第一个sheet
                {
                    sheet = workbook.GetSheetAt(0);
                }
                //excel总行数
                int rowCount = sheet.LastRowNum;
                tIPViewModel.MaxLength = rowCount;
                var pictureList = sheet.GetAllPictureInfos();
                for (int i = 2; i < rowCount; i++)
                {
                    IRow curRow = sheet.GetRow(i);
                    if (curRow.Cells.Count == 0)
                    {
                        Console.WriteLine("NO." + i + "行为空行!");
                        continue;
                    }
                    FaceObj _FaceObj = new FaceObj();//实例OrderInf,添加到新的窗口的list中
                    _FaceObj.Tmplate = new List <FaceObjTemplate>();
                    //人脸对象添加时间
                    DateTime dt0     = Convert.ToDateTime(DateTime.Now);
                    TimeSpan dt0Span = new TimeSpan(dt0.Ticks);

                    DateTime dt01     = new DateTime(1970, 1, 1);
                    TimeSpan dt01Span = new TimeSpan(dt01.Ticks);

                    long longDPTemplateStarTime0 = Convert.ToInt64(dt0Span.TotalSeconds - dt01Span.TotalSeconds);
                    _FaceObj.DTm = longDPTemplateStarTime0;
                    #region 读取excel 生成人脸对象
                    foreach (var item in ExcelColNo)
                    {
                        switch (ExcelColNo.IndexOf(item))
                        {
                        //人脸uuid
                        case 0:
                            string StringName = System.Guid.NewGuid().ToString();
                            StringName      = StringName.Replace("-", "");
                            _FaceObj.TcUuid = StringName;
                            break;

                        //姓名
                        case 1:
                            if (item != 0)
                            {
                                _FaceObj.TcName = curRow.GetCell(item).ToString();
                                Console.WriteLine(i + _FaceObj.TcName);
                            }
                            else
                            {
                                _FaceObj.TcName = _FaceObj.TcUuid;
                            }
                            break;

                        //人脸首选模板标识序号
                        case 2:
                            _FaceObj.NMain_ftID = 0;
                            break;

                        //类型
                        case 3:
                            if (item != 0)
                            {
                                _FaceObj.NType = 0;
                            }
                            break;

                        //敏感等级
                        case 4:
                            if (item != 0)
                            {
                                _FaceObj.NSST = Convert.ToInt32(curRow.GetCell(item).ToString());
                            }
                            break;

                        //额外信息
                        case 5:
                            if (item != 0)
                            {
                                _FaceObj.NExten = Convert.ToInt32(curRow.GetCell(item).ToString());
                            }
                            break;

                        //性别
                        case 6:
                            if (item != 0)
                            {
                                _FaceObj.NSex = 0;
                            }
                            break;

                        //年龄
                        case 7:
                            if (item != 0)
                            {
                                _FaceObj.NAge = Convert.ToInt32(curRow.GetCell(item).ToString());
                            }
                            break;

                        //备注
                        case 8:
                            if (item != 0)
                            {
                                _FaceObj.TcRemarks = curRow.GetCell(item).ToString();
                            }
                            break;

                        //模板1
                        case 9:
                            if (item != 0)
                            {
                                FaceObjTemplate _FaceObjTemplate = new FaceObjTemplate();
                                var             picture          = GetPictureByRowCol(pictureList, i, item);
                                if (picture != null)
                                {
                                    _FaceObj.Tmplate.Add(_FaceObjTemplate);
                                    _FaceObj.Tmplate.Last().Img = picture.PictureData;
                                }
                            }
                            break;

                        //模板2
                        case 10:
                            if (item != 0)
                            {
                                FaceObjTemplate _FaceObjTemplate = new FaceObjTemplate();
                                var             picture          = GetPictureByRowCol(pictureList, i, item);
                                if (picture != null)
                                {
                                    _FaceObj.Tmplate.Add(_FaceObjTemplate);
                                    _FaceObj.Tmplate.Last().Img = picture.PictureData;
                                }
                            }
                            break;

                        //模板3
                        case 11:
                            if (item != 0)
                            {
                                FaceObjTemplate _FaceObjTemplate = new FaceObjTemplate();
                                var             picture          = GetPictureByRowCol(pictureList, i, item);
                                if (picture != null)
                                {
                                    _FaceObj.Tmplate.Add(_FaceObjTemplate);
                                    _FaceObj.Tmplate.Last().Img = picture.PictureData;
                                }
                            }
                            break;

                        //模板4
                        case 12:
                            if (item != 0)
                            {
                                FaceObjTemplate _FaceObjTemplate = new FaceObjTemplate();
                                var             picture          = GetPictureByRowCol(pictureList, i, item);
                                if (picture != null)
                                {
                                    _FaceObj.Tmplate.Add(_FaceObjTemplate);
                                    _FaceObj.Tmplate.Last().Img = picture.PictureData;
                                }
                            }
                            break;

                        //模板5
                        case 13:
                            if (item != 0)
                            {
                                FaceObjTemplate _FaceObjTemplate = new FaceObjTemplate();
                                var             picture          = GetPictureByRowCol(pictureList, i, item);
                                if (picture != null)
                                {
                                    _FaceObj.Tmplate.Add(_FaceObjTemplate);
                                    _FaceObj.Tmplate.Last().Img = picture.PictureData;
                                }
                            }
                            break;
                        }
                    }
                    #endregion
                    //异步上传人脸对象
                    while (true)
                    {
                        if (upingCount <= maxUpCount)
                        {
                            //Console.WriteLine("第" + i + "次运行");
                            AddFaceObjDelegate.BeginInvoke(_FaceObj, new AsyncCallback(PicHandle), _FaceObj);
                            upingCount++;
                            break;
                        }
                    }
                }
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.Message);
            }
        }
Beispiel #15
0
    public void SetAnchorPoint(FaceObj t)
    {
        SetParent(t);

        _anchorpoint = t.transform as RectTransform;
    }
Beispiel #16
0
 public void Setup(FaceObj p, FaceInfo f = null, bool side = true)
 {
     FaceParent = p;
     Reset(f, side);
 }
Beispiel #17
0
    void OnGUI()
    {
        if (Data == null)
        {
            Data = GameObject.Find("GameManager").GetComponent <GameData>();
        }
        if (Gen == null)
        {
            Gen = GameObject.Find("Generator").GetComponent <Generator>();
            if (Gen)
            {
                Gen.LoadElements();
            }
        }

        GUILayout.Label("Generator", EditorStyles.boldLabel);
        if (GUILayout.Button("Get Elements"))
        {
            Gen.LoadElements();
        }
        EditorGUILayout.BeginHorizontal();
        GUI.color = Color.green;



        if (GUILayout.Button("Generate"))
        {
            /*int facenum = 30;
             * time_total = facenum * time_per_face;
             * time_init = (float) EditorApplication.timeSinceStartup;	*/
            Gen.Destroy();
            Gen.TargetData = Gen.EditorGenerate();

            Gen.GenerateNewFace(Gen.TargetData);
        }

        if (progress < time_total)
        {
            EditorUtility.DisplayProgressBar("Simple", "Show", progress / time_total);
            Gen.Destroy();
            Gen.TargetGrand = Gen.Generate(0);
            FaceObj f = Gen.GenerateFace(Gen.TargetGrand);
            f.transform.localRotation = Quaternion.identity;
            f.transform.localScale    = new Vector3(1.0F, 0.6F, 1.0F);
        }
        else
        {
            EditorUtility.ClearProgressBar();
        }
        progress = (float)(EditorApplication.timeSinceStartup - time_init);


        GUI.color = Color.white;

        GUI.color = Color.yellow;
        if (GUILayout.Button("Randomise"))
        {
            Gen.Destroy();
            Gen.TargetData = Gen.GenerateGrand();
            Gen.GenerateNewFace(Gen.TargetData);
        }
        GUI.color = Color.white;

        GUI.color = Color.yellow;
        if (GUILayout.Button("Delete"))
        {
            Gen.Destroy();
        }
        GUI.color = Color.white;
        EditorGUILayout.EndHorizontal();
        EditorGUILayout.Space();

        tab = GUILayout.Toolbar(tab, new string[] { "Base", "Hair", "Jaw", "Eyes",
                                                    "Nose", "Brows", "Ears" });
        FaceContainer targ = FOA(tab);

        if (targ == null)
        {
            return;
        }

        /*EditorGUILayout.BeginHorizontal();
         * GUILayout.Label("Elements: " + targ.Length, EditorStyles.boldLabel);
         * targ.Colour = (ColorType) EditorGUILayout.EnumPopup(targ.Colour);
         * EditorGUILayout.EndHorizontal();
         *
         * EditorGUILayout.BeginHorizontal();
         * if(GUILayout.Button("<",  GUILayout.Width(50))) targ.Index --;
         * GUILayout.Label(targ.Current.Name +"", EditorStyles.boldLabel);
         * if(GUILayout.Button(">",  GUILayout.Width(50))) targ.Index++;
         * EditorGUILayout.EndHorizontal();
         * EditorGUILayout.Space();
         *
         * EditorGUILayout.BeginHorizontal();
         * GUILayout.Label("Scale", GUILayout.Width(50));
         * targ._Scale.x = EditorGUILayout.Slider(targ._Scale.x, 0.1F, 2.5F, GUILayout.Width(150));
         * targ._Scale.y = EditorGUILayout.Slider(targ._Scale.y, 0.1F, 2.5F, GUILayout.Width(150));
         * EditorGUILayout.EndHorizontal();
         *
         * if(targ == Gen.Base)
         * {
         *      EditorGUILayout.BeginHorizontal();
         *      GUILayout.Label("Skin", GUILayout.Width(50));
         *      Gen.SkinCurrent = EditorGUILayout.ColorField(Gen.SkinCurrent, GUILayout.Width(150));
         *      if(GUILayout.Button("<",  GUILayout.Width(20))) Gen.SkinCurrent = Gen.CycleSkin(1);
         *      if(GUILayout.Button(">",  GUILayout.Width(20))) Gen.SkinCurrent = Gen.CycleSkin(-1);
         *
         *      EditorGUILayout.EndHorizontal();
         *
         *      EditorGUILayout.BeginHorizontal();
         *      GUILayout.Label("Hair", GUILayout.Width(50));
         *      Gen.HairCurrent = EditorGUILayout.ColorField(Gen.HairCurrent, GUILayout.Width(150));
         *      if(GUILayout.Button("<",  GUILayout.Width(20))) Gen.HairCurrent = Gen.CycleHair(1);
         *      if(GUILayout.Button(">",  GUILayout.Width(20))) Gen.HairCurrent = Gen.CycleHair(-1);
         *      EditorGUILayout.EndHorizontal();
         *
         *      EditorGUILayout.BeginHorizontal();
         *      GUILayout.Label("Col B", GUILayout.Width(50));
         *      Gen.OffsetCurrent = EditorGUILayout.ColorField(Gen.OffsetCurrent, GUILayout.Width(150));
         *      EditorGUILayout.EndHorizontal();
         * }
         * else
         * {
         *              EditorGUILayout.Space();
         *              EditorGUILayout.BeginHorizontal();
         *              GUILayout.Label("Position", GUILayout.Width(50));
         *              targ._Position.x = EditorGUILayout.Slider(targ._Position.x, -30.0F, 30.0F, GUILayout.Width(150));
         *              targ._Position.y = EditorGUILayout.Slider(targ._Position.y, -30.0F, 30.0F, GUILayout.Width(150));
         *              EditorGUILayout.EndHorizontal();
         *
         *              EditorGUILayout.Space();
         *
         *              EditorGUILayout.BeginHorizontal();
         *              GUILayout.Label("Rotation", GUILayout.Width(50));
         *              targ._Rotation.z = EditorGUILayout.Slider("", targ._Rotation.z, -25.0F, 25.0F, GUILayout.Width(150));
         *              EditorGUILayout.EndHorizontal();
         *
         *              EditorGUILayout.Space();
         *
         *              if(targ.Symm)
         *              {
         *                      EditorGUILayout.BeginHorizontal();
         *                      GUILayout.Label("Distance", GUILayout.Width(50));
         *                      targ.Symm_Distance = EditorGUILayout.Slider("", targ.Symm_Distance, -3.0F, 3.0F, GUILayout.Width(150));
         *                      EditorGUILayout.EndHorizontal();
         *                      EditorGUILayout.Space();
         *
         *                      EditorGUILayout.BeginHorizontal();
         *                      GUILayout.Label("Scale Diff", GUILayout.Width(50));
         *                      targ.Symm_ScaleDiff = EditorGUILayout.Slider("", targ.Symm_ScaleDiff, -0.5F, 0.5F, GUILayout.Width(150));
         *                      EditorGUILayout.EndHorizontal();
         *                      EditorGUILayout.Space();
         *              }
         *
         *              if(targ == Gen.Eye && Gen.TargetGrand)
         *              {
         *                      if(GUILayout.Button("Pupil",  GUILayout.Width(80)))
         *                      {
         *                              Gen.TargetGrand.Face[0][0].Img[1].enabled = !Gen.TargetGrand.Face[0][0].Img[1].enabled;
         *                              Gen.TargetGrand.Face[1][0].Img[1].enabled = !Gen.TargetGrand.Face[1][0].Img[1].enabled;
         *                      }
         *              }
         * }*/
        /*if(Gen.TargetData != null)
         * {
         *      changes = false;
         *      Gen.CheckEditorInfo(Gen.TargetData);
         *      if(Gen.TargetData.Faces.Count > 0 && Gen.TargetData.Faces[0] != null)
         *               Gen.TargetData.Faces[0].Create(Gen.TargetData.Info);
         *
         * }*/
    }
Beispiel #18
0
 public void SetupObj(FaceObj p, FaceObjInfoContainer f = null, bool side = true)
 {
     FaceParent = p;
     GetObjInfo(f, side);
 }
Beispiel #19
0
        /// <summary>
        /// 读取图片生成人脸对象
        /// </summary>
        /// <param name="i"></param>
        /// <param name="type">导入类型:0图片;1excel</param>
        public void ThreadImportPicIntoDb(int i, int type)
        {
            try
            {
                if (type == 0)
                {
                    string sourceName = (filesPic[i].DirectoryName + "\\" + filesPic[i].Name);

                    if (File.Exists(sourceName))
                    {
                        #region
                        FaceObj _FaceObj = new FaceObj(); //实例OrderInf,添加到新的窗口的list中
                                                          //人脸对象添加时间
                        DateTime dt0     = Convert.ToDateTime(DateTime.Now);
                        TimeSpan dt0Span = new TimeSpan(dt0.Ticks);

                        DateTime dt01     = new DateTime(1970, 1, 1);
                        TimeSpan dt01Span = new TimeSpan(dt01.Ticks);

                        long longDPTemplateStarTime0 = Convert.ToInt64(dt0Span.TotalSeconds - dt01Span.TotalSeconds);
                        _FaceObj.DTm = longDPTemplateStarTime0;
                        //生成人脸对象uuid
                        //生成uuid
                        string StringName = System.Guid.NewGuid().ToString();
                        StringName      = StringName.Replace("-", "");
                        _FaceObj.TcUuid = StringName;
                        //人脸名称
                        _FaceObj.TcName  = filesPic[i].Name.Substring(0, filesPic[i].Name.Length - 4);
                        _FaceObj.Tmplate = new List <FaceObjTemplate>();

                        FaceObjTemplate _FaceObjTemplate = new FaceObjTemplate();
                        _FaceObj.Tmplate.Add(_FaceObjTemplate);

                        _FaceObj.NMain_ftID = 0;      //设置主模板ID
                        string strPath2 = sourceName; //获得文件地址
                        if (strPath2 != "")
                        {
                            _FaceObj.Tmplate[0].Img = System.IO.File.ReadAllBytes(strPath2);
                        }
                        //判断统一指定类型
                        if ((strSex == "全部" && strType == "请选择"))
                        {
                            _FaceObj.NSex  = 0;
                            _FaceObj.NType = 1;
                        }
                        else
                        {
                            if (strSex != "" && strType != "")
                            {
                                _FaceObj.NSex = tIPViewModel.SelectedSex;
                                foreach (var basicinfo in GlobalCache.FaceTypeList.Cast <STypeInfo>())
                                {
                                    if (basicinfo.Description == tIPViewModel.Type[tIPViewModel.SelectedType])
                                    {
                                        _FaceObj.NType = basicinfo.Type == 0 ? -1 : basicinfo.Type;
                                    }
                                }
                            }
                            else
                            {
                                if (strSex != "")//如果指定了性别
                                {
                                    _FaceObj.NSex = tIPViewModel.SelectedSex;
                                }
                                if (strType != "")//如果指定了类型
                                {
                                    foreach (var basicinfo in GlobalCache.FaceTypeList.Cast <STypeInfo>())
                                    {
                                        if (basicinfo.Description == tIPViewModel.Type[tIPViewModel.SelectedType])
                                        {
                                            _FaceObj.NType = basicinfo.Type == 0 ? -1 : basicinfo.Type;
                                        }
                                    }
                                }
                            }
                        }
                        #endregion

                        //补足模板中不足的字段
                        for (int k = 0; k < _FaceObj.Tmplate.Count; k++)
                        {
                            if (_FaceObj.Tmplate[k].Img != null)//判断模板照片存在
                            {
                                //生成uuid
                                StringName = System.Guid.NewGuid().ToString();
                                StringName = StringName.Replace("-", "");
                                _FaceObj.Tmplate[k].TcUuid = StringName;
                                //所属FaceObj的uuid
                                _FaceObj.Tmplate[k].TcObjid = _FaceObj.TcUuid;
                                //模板序号
                                _FaceObj.Tmplate[k].NIndex = k;
                                // 模板添加时间
                                DateTime dt1     = Convert.ToDateTime(DateTime.Now);
                                TimeSpan dt1Span = new TimeSpan(dt1.Ticks);

                                DateTime dt2     = new DateTime(1970, 1, 1);
                                TimeSpan dt2Span = new TimeSpan(dt2.Ticks);

                                long longDPTemplateStarTime = Convert.ToInt64(dt1Span.TotalSeconds - dt2Span.TotalSeconds);
                                _FaceObj.Tmplate[k].DTm = longDPTemplateStarTime;
                            }
                        }

                        while (true)
                        {
                            if (upingCount <= maxUpCount)
                            {
                                AddFaceObjDelegate.BeginInvoke(_FaceObj, new AsyncCallback(PicHandle), _FaceObj);
                                upingCount++;
                                break;
                            }
                        }
                    }
                }
            }
            catch (Exception ex)
            {
                Logger <OperaExcel> .Log.Error("ThreadImportPicIntoDb", ex);

                return;
            }
        }
Beispiel #20
0
        /// <summary>
        /// 将人脸对象批量上传的回调函数(错误的保存)
        /// </summary>
        /// <param name="ar"></param>
        private void PicHandle(IAsyncResult ar)
        {
            lock (tIPViewModel)
            {
                try
                {
                    upedCount++;
                    FaceObj     _FaceObj = ar.AsyncState as FaceObj;
                    AsyncResult a        = (AsyncResult)ar;
                    ThreadImportPicIntoDbDelegate trys = (ThreadImportPicIntoDbDelegate)a.AsyncDelegate;
                    List <ErrorInfo> ListErrorInfo     = trys.EndInvoke(ar);
                    if (ListErrorInfo.Count > 0)
                    {
                        for (int l = 0; l < ListErrorInfo.Count; l++)
                        {
                            Console.WriteLine(ListErrorInfo[l].ErrCode + "");
                            if (ListErrorInfo[l].ErrCode == -1)//小于0,注册失败
                            {
                                byte[]               photo  = _FaceObj.Tmplate[0].Img;
                                MemoryStream         stream = new MemoryStream(photo);
                                System.Drawing.Image img    = System.Drawing.Image.FromStream(stream);
                                //判断文件夹存在
                                DirectoryInfo directory = new DirectoryInfo(tIPViewModel.ErrorAddress);
                                if (!directory.Exists)
                                {
                                    //重新生成文件夹
                                    Directory.CreateDirectory(tIPViewModel.ErrorAddress);
                                }

                                string strPath = "";

                                strPath = tIPViewModel.ErrorAddress + @"\" + _FaceObj.TcName + @".jpg";
                                img.Save(strPath, img.RawFormat);
                                tIPViewModel.ErrorCount++;
                            }
                            if (ListErrorInfo[l].ErrCode == -3 || ListErrorInfo[l].ErrCode == -2)//图片不存在
                            {
                                tIPViewModel.ErrorCount++;
                                string message = "第" + upedCount + "行注册失败";
                            }
                        }
                    }
                    else
                    {
                        ++tIPViewModel.SuccessCount;
                    }
                }
                catch (Exception ex)
                {
                    Logger <OperaExcel> .Log.Error("PicHandle", ex);

                    tIPViewModel.ErrorCount++;
                    //System.Windows.MessageBox.Show("PicHandle" + ex.Message);
                }
                finally
                {
                    ++tIPViewModel.CurrentLength;
                    tIPViewModel.ImportInfo = "总数量:" + tIPViewModel.MaxLength + "  上传数量:" + tIPViewModel.CurrentLength + "成功数量:" + tIPViewModel.SuccessCount + "";
                    //Console.WriteLine("总数量:" + tIPViewModel.MaxLength + "  上传数量:" + tIPViewModel.CurrentLength + "成功数量:" + tIPViewModel.SuccessCount + "");
                    upingCount--;
                    if (tIPViewModel.MaxLength == tIPViewModel.CurrentLength)
                    {
                        this.Dispatcher.BeginInvoke(new Action(() =>
                        {
                            MB_MODULES.Views.MyMessage.showYes("模版已全部导入完成!");
                        }));
                    }
                }
            }
        }
 public AddParams(int i, FaceObj _FaceObj)
 {
     I       = i;
     FaceObj = _FaceObj;
 }
Beispiel #22
0
    public void SetInfo(FaceInfo f, GameObject pref = null, bool side = true)
    {
        Info = f;
        if (Element == null || Index != f.Index)
        {
            if (Element != null)
            {
                DestroyImmediate(Element.gameObject);
            }
            Element = Instantiate(pref).GetComponent <FaceObj>();

            Element.transform.SetParent(this.transform);
            Element.GetComponent <RectTransform>().anchorMin = Vector3.zero;
            Element.GetComponent <RectTransform>().anchorMax = Vector3.one;
            Element.GetComponent <RectTransform>().sizeDelta = Vector3.zero;
            Child    = new UIObj[1];
            Child[0] = Element;
            Index    = f.Index;
        }

        Rect    ele_rect       = this.GetComponent <RectTransform>().rect;
        Vector3 randomised_pos = Vector3.zero;

        randomised_pos.x = Mathf.Lerp(ele_rect.xMin, ele_rect.xMax, Element.GetComponent <RectTransform>().pivot.x + Info._Position.x);
        randomised_pos.y = Mathf.Lerp(ele_rect.yMin, ele_rect.yMax, Element.GetComponent <RectTransform>().pivot.y + Info._Position.y);

        Element.transform.localPosition = randomised_pos;
        Element.transform.localRotation = Quaternion.Euler(Info._Rotation);
        Element.transform.localScale    = Info._Scale;

        if (Info.Symm)
        {
            //Element.transform.position += Vector3.right * Info.Symm_Distance * (side ? 1 : -1);
            //Element.transform.localScale += Vector3.up * Info.Symm_ScaleDiff * (side ? 1 : -1);
        }

        if (FaceParent != null && Info != null)
        {
            Color final = Color.white;

            switch (Info.Colour)
            {
            case ColorType.Skin:
                final = FaceParent.SkinCol;
                break;

            case ColorType.Hair:
                final = FaceParent.HairCol;
                break;

            case ColorType.Offset:
                final = FaceParent.OffsetCol;
                break;

            case ColorType.Nose:
                final = FaceParent.NoseCol;
                break;

            case ColorType.Feature:
                final = Color.black;
                break;
            }
            if (Element.Svg.Length > 0)
            {
                Element.Svg[0].color = final;
            }

            for (int i = 0; i < Child.Length; i++)
            {
                if (Child[i] is FaceObj)
                {
                    (Child[i] as FaceObj).FaceParent = FaceParent;
                }
            }
        }
    }