Exemple #1
0
        //void cboWindows_SelectedIndexChanged(object sender, EventArgs e)
        //{
        //    Window w = (Window)cboWindows.SelectedItem;

        //    if (thumb != IntPtr.Zero)
        //        DwmUnregisterThumbnail(thumb);

        //    int i = DwmRegisterThumbnail(this.Handle, w.Handle, out thumb);

        //    if (i == 0)
        //        UpdateThumb();
        //}

        void InitMacro()
        {
            Module.Handling.Imaging.ImageRange range = new Imaging.ImageRange(400, 525);
            dictRange.Add("이적시장_버튼", range);

            range = new Imaging.ImageRange(211 - 50, 125 - 50);
            dictRange.Add("이적시장_즐겨찾기_버튼", range);
        }
Exemple #2
0
        private string GetOCR(Bitmap big, Imaging.ImageRange range, bool flag = true)
        {
            Point p      = new Point();
            int   width  = 0;
            int   height = 0;

            p.X    = range.loc.X;
            p.Y    = range.loc.Y;
            width  = range.width;
            height = range.height;

            big = Imaging.CropImage(big, p, width, height);
            big = Imaging.ConvertFormat(big, System.Drawing.Imaging.PixelFormat.Format32bppPArgb);
            if (!flag)
            {
                big = Imaging.MakeGrayscale3(big);
            }
            //;
            else
            {
                big = grayscale(big);
            }

            //tessnet2.Tesseract api = new tessnet2.Tesseract();

            //api.Init()
            OcrApi.PathToEngine = Environment.CurrentDirectory + @"\tesseract.dll";
            OcrApi api = OcrApi.Create();

            Languages[] lang = { Languages.English };
            api.Init(lang, null, OcrEngineMode.OEM_TESSERACT_CUBE_COMBINED);
            api.SetVariable("tessedit_char_whitelist", "0123456789");

            string plainText = api.GetTextFromImage(big);

            ////Console.WriteLine(plainText);
            ////this.Invoke(new MethodInvoker(delegate() { txtLog.AppendText(plainText + Environment.NewLine); }));
            api.Dispose();
            api = null;
            System.GC.Collect(0, GCCollectionMode.Forced);
            System.GC.WaitForPendingFinalizers();

            return(plainText);
            //return "";
        }
Exemple #3
0
        void Init()
        {
            timer.Interval = 1000;
            timer.Tick    += timer_Tick;

            ResourceSet set = global::Module.Properties.Resources.ResourceManager.GetResourceSet(CultureInfo.CurrentCulture, true, true);

            foreach (DictionaryEntry item in set)
            {
                if (item.Value is Bitmap)
                {
                    dictImage.Add(item.Key.ToString(), (Bitmap)item.Value);
                }
            }

            Imaging.ImageRange range = new Imaging.ImageRange(0, 35, 483, 100);
            //dictRange.Add("모바일_메인화면", range);
            //dictRange.Add("모바일_상점", range);
            //dictRange.Add("모바일_선수영입", range);
            //dictRange.Add("모바일_이적시장", range);
            //dictRange.Add("모바일_트레이드", range);


            //range = new Imaging.ImageRange(147, 129, 210, 47);
            //dictRange.Add("모바일_상점_구입하기", range);
            //range = new Imaging.ImageRange(27, 172, 171, 235);
            //dictRange.Add("모바일_상점_이용권", range);
            //range = new Imaging.ImageRange(35, 125, 411, 51);
            //dictRange.Add("모바일_상점_구입완료", range);
            //range = new Imaging.ImageRange(99, 291, 295, 43);
            //dictRange.Add("모바일_상점_구매수", range);


            //range = new Imaging.ImageRange(207, 127, 277, 69);
            //dictRange.Add("모바일_선수영입_일반선수", range);
            //range = new Imaging.ImageRange(70, 645, 350, 70);
            //dictRange.Add("모바일_선수영입_프리미엄선수", range);
            //range = new Imaging.ImageRange(30, 320, 455, 75);
            //dictRange.Add("모바일_선수영입_공간필요", range);
            //range = new Imaging.ImageRange(0, 690, 484, 67);
            //dictRange.Add("모바일_선수영입_이용권소진", range);

            range = new Imaging.ImageRange(250, 214, 67, 25);
            dictRange.Add("모바일_트레이드_재료선수1", range);
            range = new Imaging.ImageRange(250, 243, 67, 25);
            dictRange.Add("모바일_트레이드_재료선수2", range);
            range = new Imaging.ImageRange(250, 272, 67, 30);
            dictRange.Add("모바일_트레이드_재료선수3", range);
            range = new Imaging.ImageRange(250, 300, 67, 30);
            dictRange.Add("모바일_트레이드_재료선수4", range);
            range = new Imaging.ImageRange(250, 328, 67, 30);
            dictRange.Add("모바일_트레이드_재료선수5", range);
            range = new Imaging.ImageRange(250, 356, 67, 30);
            dictRange.Add("모바일_트레이드_재료선수6", range);
            range = new Imaging.ImageRange(250, 383, 67, 30);
            dictRange.Add("모바일_트레이드_재료선수7", range);
            range = new Imaging.ImageRange(250, 413, 67, 30);
            dictRange.Add("모바일_트레이드_재료선수8", range);
            //range = new Imaging.ImageRange(250, 300, 221, 43);
            //dictRange.Add("모바일_트레이드_트레이드실행", range);
            //range = new Imaging.ImageRange(135, 765, 230, 55);
            //dictRange.Add("모바일_트레이드_확인하기", range);
            //range = new Imaging.ImageRange(170, 65, 155, 45);
            //dictRange.Add("모바일_트레이드_선수트레이드", range);
            range = new Imaging.ImageRange(170, 186, 51, 11);
            dictRange.Add("모바일_트레이드_선수1가격_1", range);
            range = new Imaging.ImageRange(170, 199, 51, 11);
            dictRange.Add("모바일_트레이드_선수1가격_2", range);
            range = new Imaging.ImageRange(170, 254, 51, 11);
            dictRange.Add("모바일_트레이드_선수2가격_1", range);
            range = new Imaging.ImageRange(170, 266, 51, 11);
            dictRange.Add("모바일_트레이드_선수2가격_2", range);
            range = new Imaging.ImageRange(170, 320, 51, 11);
            dictRange.Add("모바일_트레이드_선수3가격_1", range);
            range = new Imaging.ImageRange(170, 332, 51, 11);
            dictRange.Add("모바일_트레이드_선수3가격_2", range);
            //range = new Imaging.ImageRange(163, 63, 165, 41);
            //dictRange.Add("모바일_트레이드_트레이드결과", range);
            //range = new Imaging.ImageRange(100, 590, 295, 238);
            //dictRange.Add("모바일_트레이드_재협상", range);



            //range = new Imaging.ImageRange(345, 300, 140, 60);
            //dictRange.Add("모바일_이적시장_판매", range);
            //range = new Imaging.ImageRange(147, 75, 313, 48);
            //dictRange.Add("모바일_이적시장_판매등록", range);
            //range = new Imaging.ImageRange(175, 315, 154, 67);
            //dictRange.Add("모바일_이적시장_등록초과", range);
            //range = new Imaging.ImageRange(25, 675, 433, 81);
            //dictRange.Add("모바일_이적시장_판매대기", range);
            range = new Imaging.ImageRange(130, 215, 160, 25);
            dictRange.Add("모바일_이적시장_판매가격", range);
            //range = new Imaging.ImageRange(355, 300, 105, 37);
            //dictRange.Add("모바일_이적시장_모두받기", range);
            //range = new Imaging.ImageRange(250, 580, 170, 37);
            //dictRange.Add("모바일_이적시장_모두받기_받기", range);
            //range = new Imaging.ImageRange(150, 400, 290, 42);
            //dictRange.Add("모바일_이적시장_금액확인", range);


            dictPoint.Add("모바일_상점_클릭", new Point(240, 460));
            dictPoint.Add("모바일_단품_클릭", new Point(163, 337));
            dictPoint.Add("모바일_선수영입_클릭", new Point(260, 275));
            dictPoint.Add("모바일_구단관리_클릭", new Point(83, 460));
            dictPoint.Add("모바일_트레이드_클릭", new Point(260, 335));
            dictPoint.Add("모바일_이적시장_클릭", new Point(135, 460));
            dictPoint.Add("모바일_판매_클릭", new Point(160, 400));


            dictPoint.Add("모바일_선수영입_일반선수_클릭", new Point(240, 75));
            dictPoint.Add("모바일_선수영입_영입_클릭", new Point(225, 415));
            dictPoint.Add("모바일_선수영입_공간필요닫기_클릭", new Point(100, 285));


            dictPoint.Add("모바일_트레이드_재료선수1_클릭", new Point(222, 225));
            dictPoint.Add("모바일_트레이드_재료선수2_클릭", new Point(222, 255));
            dictPoint.Add("모바일_트레이드_재료선수3_클릭", new Point(222, 285));
            dictPoint.Add("모바일_트레이드_재료선수4_클릭", new Point(222, 310));
            dictPoint.Add("모바일_트레이드_재료선수5_클릭", new Point(222, 340));
            dictPoint.Add("모바일_트레이드_재료선수6_클릭", new Point(222, 370));
            dictPoint.Add("모바일_트레이드_재료선수7_클릭", new Point(222, 400));
            dictPoint.Add("모바일_트레이드_재료선수8_클릭", new Point(222, 430));
            dictPoint.Add("모바일_트레이드_트레이드실행_클릭", new Point(245, 170));
            dictPoint.Add("모바일_트레이드_확인하기_클릭", new Point(235, 455));
            dictPoint.Add("모바일_트레이드_선수1_클릭", new Point(185, 190));
            dictPoint.Add("모바일_트레이드_선수2_클릭", new Point(185, 255));
            //dictPoint.Add("모바일_트레이드_선수3_클릭", new Point(160, 525));
            dictPoint.Add("모바일_트레이드_트레이드실행2_클릭", new Point(235, 455));
            dictPoint.Add("모바일_트레이드_완료_클릭", new Point(30, 25));
            dictPoint.Add("모바일_트레이드_초기화_클릭", new Point(80, 170));
            dictPoint.Add("모바일_트레이드_재협상취소_클릭", new Point(110, 340));
            dictPoint.Add("모바일_트레이드_계속진행취소_클릭", new Point(68, 285));



            dictPoint.Add("모바일_이적시장_판매목록_클릭", new Point(215, 70));
            dictPoint.Add("모바일_이적시장_판매등록화면_클릭", new Point(110, 70));
            dictPoint.Add("모바일_이적시장_모두받기_클릭", new Point(270, 170));
            dictPoint.Add("모바일_이적시장_모두받기_받기_클릭", new Point(225, 335));
            dictPoint.Add("모바일_이적시장_첫선수_클릭", new Point(185, 230));
            dictPoint.Add("모바일_이적시장_판매_클릭", new Point(270, 170));
            dictPoint.Add("모바일_이적시장_판매2_클릭", new Point(225, 405));
            dictPoint.Add("모바일_이적시장_판매확인_클릭", new Point(160, 405));
            dictPoint.Add("모바일_이적시장_취소_클릭", new Point(100, 405));
            dictPoint.Add("모바일_이적시장_등록초과확인_클릭", new Point(160, 280));


            dictPoint.Add("모바일_상점_스와이프1", new Point(180, 395));
            dictPoint.Add("모바일_상점_스와이프2", new Point(180, 70));
            dictPoint.Add("모바일_상점_이용권구매_클릭", new Point(60, 315));
            dictPoint.Add("모바일_상점_구매취소", new Point(100, 395));
            dictPoint.Add("모바일_상점_구매수_클릭", new Point(230, 105));
            dictPoint.Add("모바일_상점_구매수설정_클릭", new Point(160, 195));
            dictPoint.Add("모바일_상점_구매수설정확인_클릭", new Point(215, 345));
            dictPoint.Add("모바일_상점_구입_클릭", new Point(225, 395));
            dictPoint.Add("모바일_상점_구입확인_클릭", new Point(225, 395));
        }
Exemple #4
0
        private string GetOCR(Bitmap big, Imaging.ImageRange range, bool flag = true)
        {
            Point p      = new Point();
            int   width  = 0;
            int   height = 0;

            p.X    = range.loc.X;
            p.Y    = range.loc.Y;
            width  = range.width;
            height = range.height;

            big = Imaging.CropImage(big, p, width, height);
            big = Imaging.ConvertFormat(big, System.Drawing.Imaging.PixelFormat.Format32bppArgb);
            //if (!flag)
            //big = Imaging.MakeGrayscale3(big);
            ////;
            //else
            //big = grayscale(big);

            //big.Save(Environment.CurrentDirectory + "\\test.png");
            ////tessnet2.Tesseract api = new tessnet2.Tesseract();

            ////api.Init()
            //OcrApi.PathToEngine = Environment.CurrentDirectory + @"\tesseract.dll";
            //OcrApi api = OcrApi.Create();
            //Languages[] lang = { Languages.English };
            //api.Init(lang, null, OcrEngineMode.OEM_TESSERACT_CUBE_COMBINED);
            //api.SetVariable("tessedit_char_whitelist", "0123456789");

            //string plainText = api.GetTextFromImage(big);
            //////Console.WriteLine(plainText);
            //////this.Invoke(new MethodInvoker(delegate() { txtLog.AppendText(plainText + Environment.NewLine); }));
            //api.Dispose();
            //api = null;
            //System.GC.Collect(0, GCCollectionMode.Forced);
            //System.GC.WaitForPendingFinalizers();

            //return plainText;
            var    tmpFile   = Path.GetTempFileName();
            string text      = "";
            var    bmp       = new Bitmap(Math.Max(big.Width, 1024), Math.Max(big.Height, 768));
            var    gfxResize = Graphics.FromImage(bmp);

            gfxResize.DrawImage(big, new Rectangle(0, 0, big.Width, big.Height));
            bmp.Save(tmpFile + ".png", ImageFormat.Png);

            //EncoderParameter myEncoderParameter = new EncoderParameter(myEncoder, 100L); // 0(최저화질 고압축) ~ 100L(최고화질 저압축)
            //myEncoderParameters.Param[0] = myEncoderParameter;
            //bmp.Save(tmpFile + ".jpg", jpgEncoder, myEncoderParameters);

            var doc = new MODI.Document();

            doc.Create(tmpFile + ".png");

            //Regex reg = new Regex(@"[^\d]+");
            try
            {
                doc.OCR(MODI.MiLANGUAGES.miLANG_ENGLISH, true, true);
                var img    = (MODI.Image)doc.Images[0];
                var layout = img.Layout;
                text = layout.Text;
                File.Delete(tmpFile);
                File.Delete(tmpFile + ".png");
            }
            catch (Exception e)
            {
                try
                {
                    doc.OCR(MODI.MiLANGUAGES.miLANG_ENGLISH, false, false);
                    var img    = (MODI.Image)doc.Images[0];
                    var layout = img.Layout;
                    text = layout.Text;
                }
                catch (Exception)
                {
                }
                finally
                {
                    File.Delete(tmpFile);
                    File.Delete(tmpFile + ".png");
                }
            }
            finally
            {
                File.Delete(tmpFile);
                File.Delete(tmpFile + ".png");
            }

            Int32 tryCheck = 0;

            text = Regex.Replace(text.Replace(" ", "").Replace(",", "").Replace(".", "").Trim(), @"[^\d]", "");
            Int32.TryParse(text, out tryCheck);
            if (tryCheck == 0 || tryCheck < 1000)
            {
                try
                {
                    EncoderParameters myEncoderParameters    = new EncoderParameters(1);
                    System.Drawing.Imaging.Encoder myEncoder = System.Drawing.Imaging.Encoder.Quality;
                    ImageCodecInfo jpgEncoder = GetEncoder(ImageFormat.Jpeg);

                    tmpFile   = Path.GetTempFileName();
                    text      = "";
                    bmp       = new Bitmap(Math.Max(big.Width, 1024), Math.Max(big.Height, 768));
                    gfxResize = Graphics.FromImage(bmp);
                    gfxResize.DrawImage(big, new Rectangle(0, 0, big.Width, big.Height));

                    EncoderParameter myEncoderParameter = new EncoderParameter(myEncoder, 100L);     // 0(최저화질 고압축) ~ 100L(최고화질 저압축)
                    myEncoderParameters.Param[0] = myEncoderParameter;
                    bmp.Save(tmpFile + ".jpg", jpgEncoder, myEncoderParameters);

                    doc = new MODI.Document();
                    doc.Create(tmpFile + ".jpg");
                    doc.OCR(MODI.MiLANGUAGES.miLANG_ENGLISH, true, true);
                    var img    = (MODI.Image)doc.Images[0];
                    var layout = img.Layout;
                    text = layout.Text;
                }
                catch (Exception)
                {
                    doc.OCR(MODI.MiLANGUAGES.miLANG_ENGLISH, false, false);
                    var img    = (MODI.Image)doc.Images[0];
                    var layout = img.Layout;
                    text = layout.Text;
                }
                finally
                {
                    File.Delete(tmpFile);
                    File.Delete(tmpFile + ".jpg");
                }
            }

            text = Regex.Replace(text.Replace(" ", "").Replace(",", "").Replace(".", "").Trim(), @"[^\d]", "");
            doc.Close();
            doc = null;
            bmp.Dispose();
            bmp = null;
            System.GC.Collect(0, GCCollectionMode.Forced);
            System.GC.WaitForPendingFinalizers();
            return(text);
            //return "";
        }