Inheritance: MonoBehaviour
Example #1
0
 private void bRead_Click(object sender, EventArgs e)
 {
     try
     {
         if (this.cbCodeList.Text != string.Empty)
         {
             if (GetImage == null || GetRoi == null)
             {
                 MessageBox.Show("请先打开相机界面!!!");
                 return;
             }
             using (VisionFlow flow = VisionFlow.Load(VisionToolCtrl.sPathVision + this.cbCodeList.Text))
             {
                 var image = GetImage?.Invoke();
                 var roi   = GetRoi?.Invoke();
                 if (roi == null || roi.Count == 0 || !(roi[0].Shape is RectangleContour))
                 {
                     MessageBox.Show("请在相机界面中绘制读取框!!!");
                     return;
                 }
                 var rtn = flow.Detect(image, roi[0].Shape);
                 this.tbBarcode.Text = rtn.BarCode;
             }
         }
     }
     catch
     {
         MessageBox.Show("读取失败");
     }
 }
Example #2
0
        private HImage OnGetImage()
        {
            HImage img = new HImage();

            if (GetImage != null)
            {
                GetImage.CameraSoft();
                if (GetImage.WaiteGetImage(2000))
                {
                    img = GetImage.GetCurrentImage();
                }
            }


            if (calibratePPControl != null && calibratePPControl.HWindowControl != null && img.IsInitialized())
            {
                calibratePPControl.HWindowControl.SetFullImagePart(img);
                calibratePPControl.HWindowControl.HalconWindow.DispObj(img);
                calibratePPControl.HWindowControl.HalconWindow.SetColor("blue");
                int width, height;
                img.GetImageSize(out width, out height);
                calibratePPControl.HWindowControl.HalconWindow.DispCross(height / 2.0, width / 2.0, Math.Max(height, width), 0);
            }

            if (IsCalibrationRun)
            {
                DispalyCalibrateResult();
            }


            return(img.IsInitialized() ? img : null);
        }
    private void Start()
    {
        for (int i = 0; i < Panels.Count; i++)
        {
            Panels[i].gameObject.SetActive(i == 0);
            Panels[i].SelectEvent += video.PlayHandle;
        }

        // 按钮效果
        if (ButtonImages.Count > 0)
        {
            ButtonImages[0].color = SelectBtnColor;
        }
        for (int i = 1; i < ButtonImages.Count; i++)
        {
            ButtonImages[i].color = NotSelectBtnColor;
        }
        // Tag Text
        if (SelectTagText)
        {
            SelectTagText.text = Type2Tag[VideoType.Background];
        }

        // 导入视频、缩略图生成成功后触发事件
        GetImage getImage = transform.Find("GetImage")?.GetComponent <GetImage>();

        if (getImage)
        {
            getImage.Completed += (s, e) => RefreshCurrentPanel();
        }
    }
Example #4
0
 protected void btnsubmit_Click(object sender, EventArgs e)
 {
     if (sliderimage.HasFile)
     {
         string sliderpic = sliderimage.FileName;
         imagename = "PH" + "_" + Common.GenerateClassCode2() + "_" + sliderpic;
         string filePath2            = MapPath("../uploadimage/" + imagename);
         Stream Buffer2              = sliderimage.PostedFile.InputStream;
         System.Drawing.Image Image2 = System.Drawing.Image.FromStream(Buffer2);
         Bitmap bmp2 = GetImage.ResizeImage(Image2, Image2.Height, Image2.Width);
         bmp2.Save(filePath2, System.Drawing.Imaging.ImageFormat.Jpeg);
     }
     else
     {
         imagename = img;
     }
     if (Request.QueryString["id"] != null)
     {
         objsql.ExecuteNonQuery("update tblproduct set name='" + txtname.Text + "',Mrp='" + txtmrp.Text + "',image='" + imagename + "',bv='" + txtbv.Text + "',serial='" + txtserial.Text + "' where id='" + Request.QueryString["id"] + "'");
     }
     else
     {
         objsql.ExecuteNonQuery("insert into tblproduct(name,code,mrp,image,bv,serial) values('" + txtname.Text + "','" + txtcode.Text + "','" + txtmrp.Text + "','" + imagename + "','" + txtbv.Text + "','" + txtserial.Text + "')");
     }
     img = "";
     Response.Redirect("view-products.aspx");
 }
Example #5
0
    private void Start()
    {
        for (int i = 0; i < Panels.Count; i++)
        {
            Panels[i].SelectEvent += video.PlayHandle;
        }

        // TabControl Index 联动
        TabControl tabControl = GetComponent <TabControl>();

        if (tabControl)
        {
            tabControl.IndexChanged += (s, e) => {
                curPanelIndex = tabControl.Index;
                if (SelectTagText)
                {
                    SelectTagText.text = Type2Tag[(VideoType)curPanelIndex];
                }
            };
        }

        // Tag Text
        if (SelectTagText)
        {
            SelectTagText.text = Type2Tag[VideoType.Background];
        }

        // 导入视频、缩略图生成成功后触发事件
        GetImage getImage = transform.Find("GetImage")?.GetComponent <GetImage>();

        if (getImage)
        {
            getImage.Completed += (s, e) => RefreshPanel();
        }
    }
Example #6
0
 private void bGetImage_Click(object sender, EventArgs e)
 {
     try
     {
         VisionImage img = GetImage?.Invoke();
         //VisionImage img = new VisionImage();
         //img.ReadFile(@"C:\Users\lichen\Desktop\黑到白\1.bmp");
         if (img != null)
         {
             m_hoModedImage?.Dispose();
             m_hoModedImage = HalconHelper.NI2HImage(img);
             HTuple htWidth  = new HTuple();
             HTuple htHeight = new HTuple();
             HOperatorSet.GetImageSize(m_hoModedImage, out htWidth, out htHeight);
             HOperatorSet.SetPart(m_htWindowHandle, 0, 0, htHeight, htWidth);
             HOperatorSet.DispObj(m_hoModedImage, m_htWindowHandle);
             zoom_beginRow = 0;
             zoom_beginCol = 0;
             zoom_endCol   = htWidth;
             zoom_endRow   = htHeight;
             isLoadImage   = true;
         }
     }
     catch { }
 }
Example #7
0
        private void BindData()
        {
            this.nameTextView.Text                     = this.selectedCard.name;
            this.phoneNumber1TextView.Text             = this.selectedCard.phoneNumber1;
            this.phoneNumber2TextView.Text             = this.selectedCard.phoneNumber2;
            this.companyNameTextView.Text              = this.selectedCard.companyName;
            this.addressLine1TextView.Text             = this.selectedCard.addressLine1;
            this.addressLine2TextView.Text             = this.selectedCard.addressLine2;
            this.addressLine3TextView.Text             = this.selectedCard.addressLine3;
            this.nameDesignationTextView.Text          = this.selectedCard.nameDesignation;
            this.emailAddress1TextView.Text            = this.selectedCard.emailAddress1;
            this.emailAddress2TextView.Text            = this.selectedCard.emailAddress2;
            this.webSiteTextView.Text                  = this.selectedCard.webSite;
            this.designationTextView.Text              = this.selectedCard.designation;
            this.ignoreTextTextView.Text               = this.selectedCard.ignoreText;
            this.nameDesignationTextView.Text          = this.selectedCard.nameDesignation;
            this.phoneNumber1PhoneNumber2TextView.Text = this.selectedCard.phoneNumber1PhoneNumber2;


            if (this.selectedCard.bitmap == null)
            {
                this.cardImageView.SetImageDrawable(GetImage.GetImageFromURL(this.selectedCard.filePath, this));
            }
            else
            {
                this.cardImageView.SetImageDrawable(GetImage.GetImageFromCard(this.selectedCard, this));
            }

            //var imageBitmap = ImageHelper.GetImageBitmapFromUrl("http://gillcleerenpluralsight.blob.core.windows.net/files/" + selectedCard.filePath +".jpg" );
            //cardImageView.SetImageBitmap(imageBitmap);
        }
Example #8
0
        private static void SetupMessageHandlers()
        {
            connection.AppendIncomingPacketHandler <byte>("GetCameraDevices", (header, connection, data) =>
            {
                string[] names       = WebcamHelper.GetDeviceNames();
                VideoDevices devices = new VideoDevices()
                {
                    videoDevices = new VideoDevice[names.Length]
                };
                for (int i = 0; i < devices.videoDevices.Length; i++)
                {
                    VideoCapabilities[] capabilities = WebcamHelper.GetDeviceCapabilities(i);
                    devices.videoDevices[i]          = new VideoDevice()
                    {
                        name         = names[i],
                        capabilities = new VideoDeviceCapabilities[capabilities.Length]
                    };
                    for (int j = 0; j < capabilities.Length; j++)
                    {
                        devices.videoDevices[i].capabilities[j] = new VideoDeviceCapabilities()
                        {
                            averageFramerate = capabilities[j].AverageFrameRate,
                            maxFramerate     = capabilities[j].MaximumFrameRate,
                            height           = capabilities[j].FrameSize.Height,
                            width            = capabilities[j].FrameSize.Width
                        };
                    }
                }
                connection.SendObject <byte[]>("CameraDevices", Serializer.Serialize <VideoDevices>(devices, encryptionKey));
            });

            connection.AppendIncomingPacketHandler <byte[]>("GetCameraImage", (header, connection, data) =>
            {
                GetImage image = Serializer.Deserialize <GetImage>(data, encryptionKey);
                WebcamHelper.GetWebcamImage(image.deviceIndex, image.width, image.height, (bitmapImage) =>
                {
                    connection.SendObject <byte[]>("CameraImage", Serializer.Serialize <ByteData>(new ByteData()
                    {
                        data = WebcamHelper.GetImagePNGBytes(bitmapImage)
                    }, encryptionKey));
                });
            });

            connection.AppendIncomingPacketHandler <byte>("GetDesktopImage", (header, connection, data) =>
            {
                connection.SendObject <byte[]>("DesktopImage", Serializer.Serialize <ByteData>(new ByteData()
                {
                    data = WebcamHelper.GetImagePNGBytes(WebcamHelper.GetDesktopScreenshot())
                }, encryptionKey));
            });

            connection.AppendIncomingPacketHandler <byte>("GetLocation", (header, connection, data) =>
            {
                LocationHelper.GetPosition((location) =>
                {
                    connection.SendObject <byte[]>("Location", Serializer.Serialize <DeviceLocation>(location, encryptionKey));
                });
            });
        }
 void OnMouseOver()
 {
     if (Input.GetMouseButtonDown(0))
     {
         // NOTE: gameObject.name MUST BE UNIQUE!!!!
         GetImage.GetImageFromUserAsync(gameObject.name, "ReceiveImage");
     }
 }
Example #10
0
        /// <summary>
        /// 画像を取得します
        /// </summary>
        /// <param name="ImageUrl">URL</param>
        /// <param name="Size">取得するサイズ</param>
        /// <param name="Image">出力先Bitmap</param>
        public void GetImage(string ImageUrl, ImageSize Size, out Bitmap Image)
        {
            var gi = new GetImage();

            try
            {
                gi.DownloadImage(ImageUrl, Size, out Image);
            }
            catch { throw; }
        }
Example #11
0
    void GetImageAndSetTexture(char paramChar)
    {
        string   urlString = "http://localhost:5000/get/image/content?p=" + paramChar;
        GetImage script    = gameObject.GetComponent <GetImage>();

        script.ImageMyGet(urlString, delegate(Texture2D answerTexture) {
            planeObject.GetComponent <Renderer>().material.mainTexture = answerTexture;
            planeObject.GetComponent <Renderer>().material.color       = Color.white;
        });
    }
Example #12
0
 public IActionResult GetImage(Guid imageId, int size)
 {
     try
     {
         var blob    = new GetImage(dbContext).Run(new GetImage.Request(imageId, size));
         var content = new MemoryStream(blob);
         return(base.File(content, "APPLICATION/octet-stream", "noname"));
     }
     catch (Exception e)
     {
         return(ControllerError.BadRequest(e, this));
     }
 }
Example #13
0
        // GET: User
        public ActionResult AllPost(string pageNumber)
        {
            Account account = new Account();

            if (Session["account"] == null)
            {
                return(RedirectToAction("Index", "Home"));
            }
            else
            {
                account = Session["account"] as Account;
                if (account.Role == 0)
                {
                    return(RedirectToAction("AllPost", "Admin"));
                }
                else if (account.Role == 2)
                {
                    return(RedirectToAction("ChangeInfo", "Account"));
                }
            }

            int pageN = 1;

            if (pageNumber != null)
            {
                pageN = Int32.Parse(pageNumber);
            }
            List <PostManagerModel> list = new List <PostManagerModel>();
            var listSearchResult         = SearchResult.CreateListSearchResult().Where(p => p.AccountID == account.AccountID).ToList();
            var postList = listSearchResult.Skip((pageN - 1) * PageSize).Take(PageSize).ToList();

            if (postList != null && postList.Count() > 0)
            {
                foreach (var item in postList)
                {
                    list.Add(new PostManagerModel()
                    {
                        Post      = item,
                        ImageList = GetImage.getListImage(item.MotelID),
                        motelID   = item.MotelID
                    });
                }
            }
            var subTotalPage = listSearchResult.Count / PageSize;
            var totalPage    = (listSearchResult.Count % PageSize == 0) ? subTotalPage : subTotalPage + 1;

            ViewBag.PageNumber = pageN;
            ViewBag.TotalPage  = totalPage;
            return(View(list));
        }
Example #14
0
        internal static void GetWebcamPNG(Connection connection, int deviceIndex, int height, int width, Action <byte[]> callback)
        {
            connection.AppendIncomingPacketHandler <byte[]>("CameraImage", (header, conn, data) =>
            {
                connection.RemoveIncomingPacketHandler("CameraImage");
                callback(Serializer.Deserialize <ByteData>(data, encryptionKeys[connection.ConnectionInfo.NetworkIdentifier.Value]).data);
            });
            GetImage request = new GetImage()
            {
                deviceIndex = deviceIndex,
                height      = height,
                width       = width
            };

            connection.SendObject <byte[]>("GetCameraImage", Serializer.Serialize(request, encryptionKeys[connection.ConnectionInfo.NetworkIdentifier]));
        }
Example #15
0
        public override string GetImageUrl()
        {
            GetImage getImage = PrepareGetImage();

            ArcXml.Image image = (ArcXml.Image)_service.Send(getImage);

            string url = image.Output.Url;

            if (_accessImageFromHost)
            {
                UriBuilder hostBuilder = new UriBuilder(_service.Host.ServerUrl);
                UriBuilder urlBuilder  = new UriBuilder(url);
                urlBuilder.Host = hostBuilder.Host;
                url             = urlBuilder.ToString();
            }

            return(url);
        }
Example #16
0
        private List <PostViewModel> CreateListPostViewModel(List <SearchResult> listPosts)
        {
            List <PostViewModel> list = new List <PostViewModel>();

            using (var db = new QLTroEntities())
            {
                if (listPosts != null && listPosts.Count > 0)
                {
                    foreach (var item in listPosts)
                    {
                        list.Add(new PostViewModel()
                        {
                            Post      = item,
                            ImageList = GetImage.getListImage(item.MotelID)
                        });
                    }
                }
            }
            return(list);
        }
Example #17
0
        public static List <PostViewModel> CreateListPostViewModel(int provinceID, int districtID)
        {
            List <PostViewModel> list = new List <PostViewModel>();

            using (var db = new QLTroEntities())
            {
                var searchResult = SearchResult.CreateListSearchResult().Where(p => p.ProvinceID == provinceID && p.DistrictID == districtID && p.AccountStatus == 1 && p.PostStatus == true).ToList();
                if (searchResult != null && searchResult.Count > 0)
                {
                    foreach (var item in searchResult)
                    {
                        list.Add(new PostViewModel()
                        {
                            Post      = item,
                            ImageList = GetImage.getListImage(item.MotelID)
                        });
                    }
                }
            }
            return(list);
        }
        private void EnableButtons()
        {
            if (CloseForm.InvokeRequired)
            {
                CloseForm.Invoke(new MethodInvoker(delegate { CloseForm.Enabled = true; }));
            }
            else
            {
                CloseForm.Enabled = true;
            }

            if (GetImage.InvokeRequired)
            {
                GetImage.Invoke(new MethodInvoker(delegate { GetImage.Text = pictureDialog.GetButtonText(RetryCounter); }));
                GetImage.Invoke(new MethodInvoker(delegate { GetImage.Enabled = true; }));
            }
            else
            {
                GetImage.Enabled = true;
                GetImage.Text    = pictureDialog.GetButtonText(RetryCounter);
            }
        }
Example #19
0
    protected void btnsubmit_Click(object sender, EventArgs e)
    {
        //if (Request.QueryString["id"] != null)
        //{
        //    objsql.ExecuteNonQuery("update tblproducts set name='" + txtname.Text + "',dp='" + txtdp.Text + "',pv='"+txtpv.Text+"' where id='" + Request.QueryString["id"] + "'");
        //}
        //else
        //{
        //    objsql.ExecuteNonQuery("insert into tblproducts(name,dp,pv) values('" + txtname.Text + "','" + txtdp.Text + "','"+txtpv.Text+"')");

        //}
        if (sliderimage.HasFile)
        {
            string sliderpic = sliderimage.FileName;
            imagename = sliderpic;
            string filePath2            = MapPath("../uploadimage/" + imagename);
            Stream Buffer2              = sliderimage.PostedFile.InputStream;
            System.Drawing.Image Image2 = System.Drawing.Image.FromStream(Buffer2);
            Bitmap bmp2 = GetImage.ResizeImage(Image2, Image2.Height, Image2.Width);
            bmp2.Save(filePath2, System.Drawing.Imaging.ImageFormat.Jpeg);
        }
        else
        {
            imagename = img;
        }
        if (Request.QueryString["id"] != null)
        {
            objsql.ExecuteNonQuery("update tblproducts set name='" + txtname.Text + "',dp='" + txtdp.Text + "',pv='" + txtpv.Text + "',image='" + imagename + "' where id='" + Request.QueryString["id"] + "'");
        }
        else
        {
            objsql.ExecuteNonQuery("insert into tblproducts(name,code,dp,pv,image) values('" + txtname.Text + "','" + Common.GenProductCode() + "','" + txtdp.Text + "','" + txtpv.Text + "','" + imagename + "')");
        }
        img = "";
        Response.Redirect("view-Products.aspx");
    }
 // Start is called before the first frame update
 void Start()
 {
     textureGiver          = GameObject.FindWithTag("TextureGiver").GetComponent <GetImage>();
     textureGiver.faceMesh = GetComponent <MeshRenderer>();
 }
        private void bAutoCliab1_Click(object sender, EventArgs e)
        {
            if (fm_SoftwareCliab.FindTemp == null || fm_SoftwareCliab.FindTemp.GetInvocationList().Length <= 0)
            {
                MessageBox.Show("请打开相机轴控界面!!");
                return;
            }

            #region 九点标定
            Task.Factory.StartNew(() =>
            {
                float.TryParse(this.tXSpace.Text, out this.xspace);
                float.TryParse(this.tYSpace.Text, out this.yspace);

                List <PointF> WorldPt = new List <PointF>();
                PointF start          = new PointF(orgPt.X - xspace, orgPt.Y - yspace);
                for (int i = 0; i < 3; ++i)
                {
                    for (int j = 0; j < 3; ++j)
                    {
                        WorldPt.Add(new PointF(start.X + i * xspace, start.Y + j * yspace));
                    }
                }

                // 拍照 标定 记录图像坐标
                List <PointContour> ImagePt = new List <PointContour>();
                var camera = CameraDefine.Instance.CameraList[this.module.Module][this.calibRatio1.SelectCam];
                var entiy  = SystemEntiy.Instance[this.module.Module];
                for (int I = 0; I < WorldPt.Count; ++I)
                {
                    entiy.XYGoPosTillStop(WorldPt[I]);
                    // Grab Image and Calc
                    var result = fm_SoftwareCliab.FindTemp.Invoke(this.module.Module, this.calibRatio1.SelectCam);
                    if (result.State == VisionResultState.OK)
                    {
                        ImagePt.Add(result.Point);
                    }
                    else
                    {
                        MessageBox.Show("侦测失败!!");
                        return;
                    }
                }

                short rtn = 0;

                var image = GetImage?.Invoke();
                if (image == null)
                {
                    MessageBox.Show("获取图片失败!!!");
                    return;
                }

                if (this.calibRatio1.SelectCam == Camera.Top || this.calibRatio1.SelectCam == Camera.Label)
                {
                    this.AddCliab(this.module.Module, this.calibRatio1.SelectCam, 0, image, WorldPt, ImagePt);
                }
                else
                {
                    if (this.calibRatio1.SelectNz == Nozzle.Nz1 || this.calibRatio1.SelectNz == Nozzle.Nz3)
                    {
                        this.AddCliab(this.module.Module, this.calibRatio1.SelectCam, 0, image, WorldPt, ImagePt);
                    }
                    else
                    {
                        this.AddCliab(this.module.Module, this.calibRatio1.SelectCam, 1, image, WorldPt, ImagePt);
                    }
                }

                if (rtn == 0)
                {
                    CameraDefine.Save();
                    MessageBox.Show("相机标定成功!!");
                }
                else
                {
                    MessageBox.Show("相机标定成功!!");
                }
            });
            #endregion
        }
Example #22
0
 public void OnClick()
 {
     // NOTE: gameObject.name MUST BE UNIQUE!!!!
     GetImage.GetImageFromUserAsync(gameObject.name, "ReceiveImage");
 }
Example #23
0
        public NewTemplateElement()
        {
            InitializeComponent();

            LoadUrl loadUrl = new LoadUrl();

            loadUrl.NewInstance();
            availableBaseObjects.Add(loadUrl);
            GetInputFromUser getInputFromUser = new GetInputFromUser();

            getInputFromUser.NewInstance();
            availableBaseObjects.Add(getInputFromUser);
            SwitchWindowVisibility switchWindowVisibility = new SwitchWindowVisibility();

            switchWindowVisibility.NewInstance();
            availableBaseObjects.Add(switchWindowVisibility);
            ElementToLoad elementToLoad = new ElementToLoad();

            elementToLoad.NewInstance();
            availableBaseObjects.Add(elementToLoad);
            EventToTrigger eventToTrigger = new EventToTrigger();

            eventToTrigger.NewInstance();
            availableBaseObjects.Add(eventToTrigger);
            GetAttribute getAttribute = new GetAttribute();

            getAttribute.NewInstance();
            availableBaseObjects.Add(getAttribute);
            GetHttpAuth getHttpAuth = new GetHttpAuth();

            getHttpAuth.NewInstance();
            availableBaseObjects.Add(getHttpAuth);
            GetImage getImage = new GetImage();

            getImage.NewInstance();
            availableBaseObjects.Add(getImage);
            GetJsPrompt getJsPrompt = new GetJsPrompt();

            getJsPrompt.NewInstance();
            availableBaseObjects.Add(getJsPrompt);
            GetStyle getStyle = new GetStyle();

            getStyle.NewInstance();
            availableBaseObjects.Add(getStyle);
            InvokeSubmit invokeSubmit = new InvokeSubmit();

            invokeSubmit.NewInstance();
            availableBaseObjects.Add(invokeSubmit);
            InvokeMouseClick invokeMouseClick = new InvokeMouseClick();

            invokeMouseClick.NewInstance();
            availableBaseObjects.Add(invokeMouseClick);
            JavascriptToExecute javascriptToExecute = new JavascriptToExecute();

            javascriptToExecute.NewInstance();
            availableBaseObjects.Add(javascriptToExecute);
            ResourceToLoad resourceToLoad = new ResourceToLoad();

            resourceToLoad.NewInstance();
            availableBaseObjects.Add(resourceToLoad);
            SetAttribute setAttribute = new SetAttribute();

            setAttribute.NewInstance();
            availableBaseObjects.Add(setAttribute);
            SetHttpAuth setHttpAuth = new SetHttpAuth();

            setHttpAuth.NewInstance();
            availableBaseObjects.Add(setHttpAuth);
            SetJsPrompt setJsPrompt = new SetJsPrompt();

            setJsPrompt.NewInstance();
            availableBaseObjects.Add(setJsPrompt);
            SetStyle setStyle = new SetStyle();

            setStyle.NewInstance();
            availableBaseObjects.Add(setStyle);
            SiteLoaded siteLoaded = new SiteLoaded();

            siteLoaded.NewInstance();
            availableBaseObjects.Add(siteLoaded);
            GetInnerText getInnerText = new GetInnerText();

            getInnerText.NewInstance();
            availableBaseObjects.Add(getInnerText);
            GetInnerHtml getInnerHtml = new GetInnerHtml();

            getInnerHtml.NewInstance();
            availableBaseObjects.Add(getInnerHtml);
            SetValue setValue = new SetValue();

            setValue.NewInstance();
            availableBaseObjects.Add(setValue);
            SecondsToWait secondsToWait = new SecondsToWait();

            secondsToWait.NewInstance();
            availableBaseObjects.Add(secondsToWait);
            InvokeFullKeyboardEvent invokeFullKeyBoardEvent = new InvokeFullKeyboardEvent();

            invokeFullKeyBoardEvent.NewInstance();
            availableBaseObjects.Add(invokeFullKeyBoardEvent);
        }
Example #24
0
        public async Task <ImageDto> GetForEdit(GetImage input)
        {
            Image nhomVT = await _repository.GetAsync(input.Id);

            return(nhomVT.MapTo <ImageDto>());
        }
Example #25
0
 void OnEnable()
 {
     isStartUpdate = true;
     _instance     = this;
     StartCoroutine(init());
 }
Example #26
0
        private void toolInputCamrea_Click(object sender, EventArgs e)
        {
            var img = GetImage?.Invoke();

            Algorithms.Copy(img, this.imageSet.Image);
        }
Example #27
0
 private void Form1_FormClosing(object sender, FormClosingEventArgs e)
 {
     GetImage.CloseWebCam();
 }
Example #28
0
 public void OnGetImage(GameObject previewObj)
 {
     SelectedBtn = previewObj;
     // NOTE: gameObject.name MUST BE UNIQUE!!!!
     GetImage.GetImageFromUserAsync(gameObject.name, "ReceiveImage");
 }
Example #29
0
        void ReleaseDesignerOutlets()
        {
            if (FeatureMap != null)
            {
                FeatureMap.Dispose();
                FeatureMap = null;
            }

            if (GetImage != null)
            {
                GetImage.Dispose();
                GetImage = null;
            }

            if (imageLabel != null)
            {
                imageLabel.Dispose();
                imageLabel = null;
            }

            if (ImageViewer != null)
            {
                ImageViewer.Dispose();
                ImageViewer = null;
            }

            if (messageLabel != null)
            {
                messageLabel.Dispose();
                messageLabel = null;
            }

            if (ProcessImage != null)
            {
                ProcessImage.Dispose();
                ProcessImage = null;
            }

            if (ResetImage != null)
            {
                ResetImage.Dispose();
                ResetImage = null;
            }

            if (Root != null)
            {
                Root.Dispose();
                Root = null;
            }

            if (switchSwitch != null)
            {
                switchSwitch.Dispose();
                switchSwitch = null;
            }

            if (textAperture != null)
            {
                textAperture.Dispose();
                textAperture = null;
            }

            if (textThreshold1 != null)
            {
                textThreshold1.Dispose();
                textThreshold1 = null;
            }

            if (textThreshold2 != null)
            {
                textThreshold2.Dispose();
                textThreshold2 = null;
            }
        }
Example #30
0
        private void backgroundWorkerListen_RunWorkerCompleted(object sender, RunWorkerCompletedEventArgs e)
        {
            ARHScanner sc = e.Result as ARHScanner;

            if (sc != null && ErrorCode == 0)
            {
                //if (sc.DeviceState == (int)pr.PR_TESTDOC.PR_TD_OUT && !_noOut)
                if (sc.DeviceState == (int)Pr22.Util.PresenceState.Empty && !_noOut)
                {
                    _noOut = true;

                    if (toolStripStatusLabelError.Text == "Image processing...")
                        toolStripStatusLabelError.Text = "";

                    tabControl1.TabPages[0].Tag = "No barcode found";
                    tabControl1.TabPages[1].Tag = "No MRZ found";

                    button1.Enabled = true;
                    button1.Focus();
                }
                //else if (sc.DeviceState == (int)pr.PR_TESTDOC.PR_TD_NOMOVE && !_noMove)
                else if (sc.DeviceState == (int)Pr22.Util.PresenceState.NoMove && !_noMove)
                {
                    _noMove = true;
                    _noOut = false;

                    button1.Enabled = false;
                    button2.Enabled = false;
                    button3.Enabled = false;

                    ShowStatusMessage("Image processing...");
                    startProgressBar();

                    textBox1.Text = "";
                    pictureBox1.Image = null;
                    pictureBox1.BorderStyle = BorderStyle.None;
                    textBox2.Text = "";
                    pictureBox2.Image = null;
                    pictureBox2.BorderStyle = BorderStyle.None;
                    textBox3.Text = "";

                    //System.Threading.Thread.Sleep(100);
                    Application.DoEvents();

                    PrMethod[] delegates = new PrMethod[] {
                                                    sc.prCaptureImage,
                                                    sc.prCaptureBarcode,
                                                    sc.prGetGTIN,
                                                    sc.prGetBarcodeData,
                                                    sc.prGetBarcodeImage,
                                                    sc.prSaveBarcodeImage,
                                                    sc.prReleaseDocument,
                                                    sc.prCaptureMRZ,
                                                    sc.prGetMRZData,
                                                    sc.prGetMRZImage,
                                                    sc.prSaveMRZImage,
                                                    sc.prReleaseDocument
                                                };

                    foreach (PrMethod prMethod in delegates)
                    {
                        if (prMethod.Method.Name == "prGetBarcodeData" ||
                            prMethod.Method.Name == "prGetMRZData")
                        {
                            IList list = new ArrayList();
                            if (prMethod.Method.Name == "prGetBarcodeData")
                                ErrorCode = sc.prGetBarcodeData(list);
                            else
                                ErrorCode = sc.prGetMRZData(list);

                            if (ErrorCode != 0)
                            {
                                break;
                            }

                            if (list.Count != 0)
                            {
                                StringBuilder sb = new StringBuilder();
                                for (int i = 0; i < list.Count; i++)
                                {
                                    sb.Append(list[i]);
                                    sb.Append(Environment.NewLine);
                                }
                                if (prMethod.Method.Name == "prGetBarcodeData")
                                    textBox1.Text = sb.ToString();
                                else
                                    textBox2.Text = sb.ToString();
                            }

                            if (prMethod.Method.Name == "prGetBarcodeData")
                                textBox1.Select(0, 0);
                            else
                                textBox2.Select(0, 0);
                        }
                        else if (prMethod.Method.Name == "prGetBarcodeImage" ||
                                prMethod.Method.Name == "prGetMRZImage")
                        {
                            GetImage method;
                            if (prMethod.Method.Name == "prGetBarcodeImage")
                            {
                                //IntPtr hDc = GetWindowDC(pictureBox1.Handle);
                                //sc.prGetBarcodeImage(hDc);
                                //ReleaseDC(pictureBox1.Handle, hDc);

                                method = new GetImage(sc.prGetBarcodeImage);
                                ErrorCode = ShowImage(method, pictureBox1);
                            }
                            else
                            {
                                method = new GetImage(sc.prGetMRZImage);
                                ErrorCode = ShowImage(method, pictureBox2);
                            }

                            if (ErrorCode != 0)
                            {
                                break;
                            }
                        }
                        else if (prMethod.Method.Name == "prGetGTIN")
                        {
                            if ((ErrorCode = sc.prGetGTIN(out _gtin, out _barcodeType)) != 0)
                            {
                                break;
                            }
                        }
                        else
                        {
                            ErrorCode = prMethod();

                            switch (prMethod.Method.Name)
                            {
                                case "prCaptureBarcode":
                                    if (ErrorCode == 1303)
                                        tabControl1.TabPages[0].Tag = sc.ErrorMessage;
                                    else
                                        tabControl1.TabPages[0].Tag = "";
                                    break;
                                case "prCaptureMRZ":
                                    if (ErrorCode == 1303)
                                        tabControl1.TabPages[1].Tag = sc.ErrorMessage;
                                    else
                                        tabControl1.TabPages[1].Tag = "";
                                    break;

                                //case "prSaveBarcodeImage":
                                //ShowImage(pictureBox1, "barcode.jpg");
                                //  break;
                                //case "prSaveMRZImage":
                                //ShowImage(pictureBox2, "mrz.jpg");
                                //  break;
                            }

                            if (ErrorCode == 1303)
                                ErrorCode = 0;

                            if (ErrorCode != 0)
                            {
                                break;
                            }
                        }

                        button1.Enabled = true;
                        button1.Focus();

                        Application.DoEvents();
                    }   // end of foreach

                    if (ErrorCode == 0)
                        ShowStatusMessage("");
                    else
                        ShowError(sc);

                    Application.DoEvents();

                    foreach (TabPage page in tabControl1.TabPages)
                    {
                        if (!String.IsNullOrEmpty(page.Tag as string))
                        {
                            if (page.Equals(tabControl1.SelectedTab))
                            {
                                toolStripStatusLabelError.Text = page.Tag as string;
                            }
                            else
                            {
                                if (String.IsNullOrEmpty(toolStripStatusLabelError.Text))
                                    ShowStatusMessage(page.Tag as string);
                            }

                            toolStripStatusLabelError.ForeColor = Color.Red;
                        }
                        /*
                                                else
                                                {
                                                    if (!page.Equals(tabControl1.SelectedTab))
                                                        tabControl1.SelectTab(page.Name);
                                                }
                        */
                    }
                }
                //else if (sc.DeviceState != (int)pr.PR_TESTDOC.PR_TD_NOMOVE)
                else if (sc.DeviceState != (int)Pr22.Util.PresenceState.NoMove)
                    _noMove = false;

                stopProgressBar();

                button1.Enabled = true;

                if (_barcodeType.StartsWith("EAN") || _barcodeType.StartsWith("UPC"))
                {
                    button2.Enabled = true;
                    button3.Enabled = true;
                }

                //button1.Focus();

                startListenProcess(sc);
            }
            else if (ErrorCode != 0)
                ShowError(sc);
        }
        private void buttonCreateDemoTemplate_Click(object sender, EventArgs e)
        {
            List <TemplateElement> templateElements = new List <TemplateElement>();


            SwitchWindowVisibility visibility = new SwitchWindowVisibility();

            visibility.NewInstance();
            visibility.Visible.Value = true;
            templateElements.Add(new TemplateElement("show window", visibility));

            //Dont forget to change identifier to real one!
            LoadUrl url = new LoadUrl();

            url.NewInstance();
            url.Url.Value = "http://keepass.info/help/kb/testform.html";
            templateElements.Add(new TemplateElement("Load Site", url));

            BrowserAction actionLoaded = new BrowserAction();
            SiteLoaded    siteLoaded   = new SiteLoaded();

            siteLoaded.NewInstance();
            siteLoaded.ExpectedSiteToLoad.Value         = url.Url;
            siteLoaded.ExpectedSiteToLoad.IsRegex.Value = false;
            actionLoaded.ActionObject = siteLoaded;
            templateElements.Add(new TemplateElement("Check if Site has loaded", actionLoaded));

            BrowserAction checkNumberOfElements1 = new CefBrowserControl.BrowserAction();
            ElementToLoad loadElement            = new ElementToLoad();

            loadElement.NewInstance();
            loadElement.Selector.SelectorExecuteActionOn  = BrowserAction.ExecuteActionOn.Id;
            loadElement.Selector.SelectorString           = "LoginFormUser";
            loadElement.Selector.ExpectedNumberOfElements = new InsecureInt(1);
            checkNumberOfElements1.ActionObject           = loadElement;
            templateElements.Add(new TemplateElement("Check if Form exists", checkNumberOfElements1));


            BrowserAction imageAction = new BrowserAction();
            GetImage      getImage1   = new GetImage();

            getImage1.NewInstance();
            imageAction.ActionObject                   = getImage1;
            getImage1.Selector.SelectorString          = "/html/body/table/tbody/tr[1]/td/table/tbody/tr/td[1]/img";
            getImage1.Selector.SelectorExecuteActionOn = BrowserAction.ExecuteActionOn.Xpath;
            TemplateElement getImageTemplateElement = new TemplateElement("Download KeePass Image", imageAction);

            templateElements.Add(getImageTemplateElement);


            GetInputFromUser input = new GetInputFromUser();

            input.NewInstance();
            input.InputNeeded.Value = true;
            input.InsecureDisplayObjects.Add(new InsecureText("Please type in 'OK'. Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum."));
            input.InsecureDisplayObjects.Add(new InsecureImage(Template.EncodeTemplateElementIdWithOutputName(getImageTemplateElement.UEID, GetImage.KeyList.Base64String.ToString())));
            TemplateElement templateElement1 = new TemplateElement("Get OK from User", input);

            templateElement1.SuccessConditions.Add(new Condition("Contains", Template.EncodeTemplateElementIdWithOutputName("", GetInputFromUser.KeyList.UserInputResult.ToString()), "OK"));
            templateElements.Add(templateElement1);


            //----------------------------


            BrowserAction checkNumberOfElements2 = new CefBrowserControl.BrowserAction();
            ElementToLoad elementToLoad2         = new ElementToLoad();

            elementToLoad2.NewInstance();
            checkNumberOfElements2.ActionObject                    = elementToLoad2;
            elementToLoad2.Selector.SelectorExecuteActionOn        = BrowserAction.ExecuteActionOn.Name;
            elementToLoad2.Selector.SelectorString                 = "pwd";
            elementToLoad2.Selector.ExpectedNumberOfElements.Value = 1;
            templateElements.Add(new TemplateElement("Check if Form Field 'pwd' exists", checkNumberOfElements2));

            BrowserAction checkNumberOfElements3 = new CefBrowserControl.BrowserAction();
            ElementToLoad elementToLoad3         = new ElementToLoad();

            elementToLoad3.NewInstance();
            checkNumberOfElements3.ActionObject                    = elementToLoad3;
            elementToLoad3.Selector.SelectorExecuteActionOn        = BrowserAction.ExecuteActionOn.Name;
            elementToLoad3.Selector.SelectorString                 = "LoginForm";
            elementToLoad3.Selector.ExpectedNumberOfElements.Value = 1;
            templateElements.Add(new TemplateElement("Check if Form Field 'LoginForm' exists", checkNumberOfElements3));

            BrowserAction enteryUserName       = new BrowserAction();
            SetAttribute  setAttributeUserName = new SetAttribute();

            setAttributeUserName.NewInstance();
            enteryUserName.ActionObject = setAttributeUserName;
            setAttributeUserName.AttributeName.Value = "Value";
            setAttributeUserName.ValueToSet.Value    = BaseObject.ConvertStringToPlaceholderString(PwDefs.UserNameField);
            setAttributeUserName.Selector.ExpectedNumberOfElements.Value = 1;
            setAttributeUserName.Selector.SelectorExecuteActionOn        = BrowserAction.ExecuteActionOn.Id;
            setAttributeUserName.Selector.SelectorString = "LoginFormUser";
            templateElements.Add(new TemplateElement("enter username", enteryUserName));

            BrowserAction enterPassword        = new BrowserAction();
            SetAttribute  setAttributePassword = new SetAttribute();

            setAttributePassword.NewInstance();
            enterPassword.ActionObject = setAttributePassword;
            setAttributePassword.AttributeName.Value = "Value";
            setAttributePassword.ValueToSet.Value    = BaseObject.ConvertStringToPlaceholderString(PwDefs.PasswordField) + " " + BaseObject.ConvertStringToPlaceholderString("");
            setAttributePassword.Selector.ExpectedNumberOfElements.Value = 1;
            setAttributePassword.Selector.SelectorExecuteActionOn        = BrowserAction.ExecuteActionOn.Name;
            setAttributePassword.Selector.SelectorString = "pwd";
            templateElements.Add(new TemplateElement("enter password", enterPassword));

            BrowserAction handleJsDialog = new BrowserAction();
            SetJsPrompt   setJsPrompt    = new SetJsPrompt();

            setJsPrompt.NewInstance();
            handleJsDialog.ActionObject                   = setJsPrompt;
            setJsPrompt.ExpectedDialogType.Value          = GetJsPrompt.DialogTypes.Alert;
            setJsPrompt.ExpectedMessageText.IsRegex.Value = true;
            setJsPrompt.ExpectedMessageText.Value.Value   = "The following data would have been submitted";
            templateElements.Add(new TemplateElement("set jsdialog handler", handleJsDialog));

            SwitchWindowVisibility visibility2 = new SwitchWindowVisibility();

            visibility2.NewInstance();
            visibility2.Visible.Value = false;
            templateElements.Add(new TemplateElement("hide window", visibility2));

            BrowserAction clickSubmit  = new BrowserAction();
            InvokeSubmit  invokeSubmit = new InvokeSubmit();

            invokeSubmit.NewInstance();
            clickSubmit.ActionObject = invokeSubmit;
            invokeSubmit.Selector.SelectorExecuteActionOn        = BrowserAction.ExecuteActionOn.Name;
            invokeSubmit.Selector.SelectorString                 = "LoginForm";
            invokeSubmit.Selector.ExpectedNumberOfElements.Value = 1;
            templateElements.Add(new TemplateElement("submit form", clickSubmit));

            BrowserAction checkJsDialog = new BrowserAction();
            GetJsPrompt   getJsPrompt   = new GetJsPrompt();

            getJsPrompt.NewInstance();
            checkJsDialog.ActionObject                    = getJsPrompt;
            getJsPrompt.ExpectedDialogType.Value          = GetJsPrompt.DialogTypes.Alert;
            getJsPrompt.ExpectedMessageText.IsRegex.Value = true;
            getJsPrompt.ExpectedMessageText.Value.Value   = "The following data would have been submitted";
            TemplateElement templateElement2 = new TemplateElement("get jsdialog", checkJsDialog);

            templateElement2.SuccessConditions.Add(new Condition("Contains",
                                                                 Template.EncodeTemplateElementIdWithOutputName("", GetJsPrompt.KeyList.MessageText.ToString()),
                                                                 "The following data would have been submitted"));
            templateElements.Add(templateElement2);

            Template template = new Template(1,
                                             new StringOrRegex()
            {
                IsRegex = new InsecureBool(true), Value = new InsecureText("keepass")
            },
                                             "KeePass TestForm, some illegal chars: \"M\"\\a/ry/ h**ad:>> a\\/:*?\"| li*tt|le|| la\"mb.?", new PasswordCreationPolicy(), templateElements);

            AddTemplate(template);
            RefreshUI();
        }
Example #32
0
        public int ShowImage(GetImage method, PictureBox pb)
        {
            int retCode = 0;

            try
            {
                byte[] buff = null;
                retCode = method(out buff);

                if (buff != null)
                {
                    MemoryStream stream = new MemoryStream(buff);
                    pb.Image = Image.FromStream(stream);

                    //pb.Image.Save(stream, System.Drawing.Imaging.ImageFormat.Jpeg);

                    if (pb.Image.Width > _pictureBoxWidth)
                        pb.Width = _pictureBoxWidth;
                    else
                        pb.Width = pb.Image.Width;

                    pb.Height = pb.Image.Height;

                    pb.BorderStyle = BorderStyle.FixedSingle;
                    pb.SizeMode = PictureBoxSizeMode.Zoom;
                }
            }
            catch (Exception e)
            {
                _sc.ErrorMessage = e.Message + " --- ShowImage()";
                return 1305;
            }

            return retCode;
        }
Example #33
0
        public IEnumerator<ITask> GetImageHandler(GetImage get)
        {
            if (!_state.Connected)
            {
                get.ResponsePort.Post(new Fault() { Reason = new ReasonText[] { new ReasonText() { Value = "Not connected" } } });
                yield break;
            }

            MyroImageType imageType = null;
            byte[] responseData = null;
            Fault fault = null;
            // Retrieve image data based on image type
            if (get.Body.ImageType.Equals(MyroImageType.Color.Guid))
            {
                imageType = MyroImageType.Color;
                yield return Arbiter.Choice(_scribblerComPortPost(
                    new ScribblerCommand(ScribblerHelper.Commands.GET_IMAGE)),
                    delegate(ScribblerResponse r) { responseData = r.Data; },
                    delegate(Fault f) { fault = f; });
            }
            else if (get.Body.ImageType.Equals(MyroImageType.Gray.Guid))
            {
                imageType = MyroImageType.Gray;
                var gw = new GetWindow(new GetWindowBody()
                {
                    Window = 0,
                    XLow = 1,
                    YLow = 0,
                    XHigh = 255,
                    YHigh = 191,
                    XStep = 2,
                    YStep = 1
                });
                _mainPort.PostUnknownType(gw);
                yield return Arbiter.Choice(gw.ResponsePort,
                    delegate(ImageResponse r)
                    {
                        if (r.Data.Length != 128 * 192)
                            fault = RSUtils.FaultOfException(new Exception("Invalid grayscale image from GetWindow"));
                        else
                        {
                            // Scale image up and copy bits
                            Bitmap bmp = new Bitmap(128, 192, PixelFormat.Format8bppIndexed);
                            bmp.Palette = grayscalePallette;
                            BitmapData bmpData = bmp.LockBits(new Rectangle(0, 0, 128, 192), ImageLockMode.WriteOnly, PixelFormat.Format8bppIndexed);
                            System.Runtime.InteropServices.Marshal.Copy(r.Data, 0, bmpData.Scan0, 128 * 192);
                            bmp.UnlockBits(bmpData);
                            Bitmap bmp2 = new Bitmap(256, 192, PixelFormat.Format24bppRgb);
                            Graphics g = Graphics.FromImage(bmp2);
                            g.InterpolationMode = System.Drawing.Drawing2D.InterpolationMode.Bilinear;
                            g.DrawImage(bmp, 0, 0, 256, 192);
                            BitmapData bmpData2 = bmp2.LockBits(new Rectangle(0, 0, 256, 192), ImageLockMode.ReadOnly, PixelFormat.Format24bppRgb);
                            responseData = new byte[256 * 192 * 3];
                            System.Runtime.InteropServices.Marshal.Copy(bmpData2.Scan0, responseData, 0, 256 * 192 * 3);
                            bmp2.UnlockBits(bmpData2);
                            bmp.Dispose();
                            bmp2.Dispose();
                            g.Dispose();
                        }
                    },
                    delegate(Fault f) { fault = f; });
            }
            else if (get.Body.ImageType.Equals(MyroImageType.JpegColor.Guid) ||
                get.Body.ImageType.Equals(MyroImageType.JpegColorFast.Guid))
            {
                imageType = MyroImageType.JpegColor;

                // Get Header
                if (cachedJpegHeaderColor == null)
                {
                    // NOTE: Hack here, in ScribblerComm.SendCommand, if the command is to
                    // get a JPEG header, it will get the header length from the first two
                    // bytes from the serial port.
                    yield return Arbiter.Choice(_scribblerComPortPost(new ScribblerCommand(
                        ScribblerHelper.Commands.GET_JPEG_COLOR_HEADER)),
                        delegate(ScribblerResponse r) { cachedJpegHeaderColor = r.Data; },
                        delegate(Fault f) { fault = f; });
                    //if (fault == null)
                    //    Console.WriteLine("JPEG: header is " + cachedJpegHeaderColor.Length + " bytes");
                }

                // Get scans
                byte[] scans = null;
                if (fault == null)
                {
                    byte reliable = get.Body.ImageType.Equals(MyroImageType.JpegColor.Guid) ? (byte)1 : (byte)0;
                    yield return Arbiter.Choice(_scribblerComPortPost(new ScribblerCommand(
                        ScribblerHelper.Commands.GET_JPEG_COLOR_SCAN, reliable) { EndMarker1 = 0xff, EndMarker2 = 0xd9 }),
                        delegate(ScribblerResponse r) { scans = r.Data; },
                        delegate(Fault f) { fault = f; });
                }
                //if (fault == null)
                //    Console.WriteLine("JPEG: scans is " + scans.Length + " bytes");

                // Decode JPEG
                if (fault == null)
                {
                    if (cachedJpegHeaderColor == null || scans == null)
                        fault = RSUtils.FaultOfException(new ScribblerDataException("Had null header or scans in GetImageHandler for jpeg"));
                    else
                    {
                        try
                        {
                            byte[] jpeg = new byte[cachedJpegHeaderColor.Length - 2 + scans.Length];
                            Array.Copy(cachedJpegHeaderColor, 2, jpeg, 0, cachedJpegHeaderColor.Length - 2);
                            Array.Copy(scans, 0, jpeg, cachedJpegHeaderColor.Length - 2, scans.Length);

                            // Create Bitmap from jpeg and scale (jpegs from Fluke are half-width)
                            Bitmap obmp = new Bitmap(new MemoryStream(jpeg));
                            Bitmap bmp = new Bitmap(imageType.Width, imageType.Height, PixelFormat.Format24bppRgb);
                            Graphics g = Graphics.FromImage(bmp);
                            g.InterpolationMode = System.Drawing.Drawing2D.InterpolationMode.Bilinear;
                            g.DrawImage(obmp, 0, 0, imageType.Width, imageType.Height);
                            obmp.Dispose();
                            g.Dispose();

                            if (bmp.Width != imageType.Width || bmp.Height != imageType.Height ||
                                    bmp.PixelFormat != PixelFormat.Format24bppRgb)
                                throw new ScribblerDataException("Bitmap from JPEG had wrong size or format");

                            // Copy frame
                            //Console.WriteLine("Copying frame...");
                            BitmapData bitmapData = bmp.LockBits(new Rectangle(0, 0, bmp.Width, bmp.Height),
                                System.Drawing.Imaging.ImageLockMode.ReadOnly, System.Drawing.Imaging.PixelFormat.Format24bppRgb);
                            responseData = new byte[imageType.Width * imageType.Height * 3];
                            System.Runtime.InteropServices.Marshal.Copy(
                                bitmapData.Scan0, responseData, 0, imageType.Width * imageType.Height * 3);
                            bmp.UnlockBits(bitmapData);
                            //Console.WriteLine("JPEG done");
                        }
                        catch (Exception e)
                        {
                            fault = RSUtils.FaultOfException(e);
                        }

                    }
                }
            }
            else if (get.Body.ImageType.Equals(MyroImageType.JpegGray.Guid) ||
                get.Body.ImageType.Equals(MyroImageType.JpegGrayFast.Guid))
            {
                imageType = MyroImageType.JpegGray;

                // Get Header
                if (cachedJpegHeaderGray == null)
                {
                    // NOTE: Hack here, in ScribblerComm.SendCommand, if the command is to
                    // get a JPEG header, it will get the header length from the first two
                    // bytes from the serial port.
                    yield return Arbiter.Choice(_scribblerComPortPost(new ScribblerCommand(
                        ScribblerHelper.Commands.GET_JPEG_GRAY_HEADER)),
                        delegate(ScribblerResponse r) { cachedJpegHeaderGray = r.Data; },
                        delegate(Fault f) { fault = f; });
                    //if (fault == null)
                    //    Console.WriteLine("JPEG: header is " + cachedJpegHeaderGray.Length + " bytes");
                }

                // Get scans
                byte[] scans = null;
                if (fault == null)
                {
                    byte reliable = get.Body.ImageType.Equals(MyroImageType.JpegGray.Guid) ? (byte)1 : (byte)0;
                    yield return Arbiter.Choice(_scribblerComPortPost(new ScribblerCommand(
                        ScribblerHelper.Commands.GET_JPEG_GRAY_SCAN, reliable) { EndMarker1 = 0xff, EndMarker2 = 0xd9 }),
                        delegate(ScribblerResponse r) { scans = r.Data; },
                        delegate(Fault f) { fault = f; });
                }
                //if (fault == null)
                //    Console.WriteLine("JPEG: scans is " + scans.Length + " bytes");

                // Decode JPEG
                if (fault == null)
                {
                    if (cachedJpegHeaderGray == null || scans == null)
                        fault = RSUtils.FaultOfException(new ScribblerDataException("Had null header or scans in GetImageHandler for jpeg"));
                    else
                    {
                        try
                        {
                            byte[] jpeg = new byte[cachedJpegHeaderGray.Length - 2 + scans.Length];
                            Array.Copy(cachedJpegHeaderGray, 2, jpeg, 0, cachedJpegHeaderGray.Length - 2);
                            Array.Copy(scans, 0, jpeg, cachedJpegHeaderGray.Length - 2, scans.Length);

                            // Create Bitmap from jpeg and scale (jpegs from Fluke are half-width)
                            Bitmap obmp = new Bitmap(new MemoryStream(jpeg));
                            Bitmap bmp = new Bitmap(imageType.Width, imageType.Height, PixelFormat.Format24bppRgb);
                            Graphics g = Graphics.FromImage(bmp);
                            g.InterpolationMode = System.Drawing.Drawing2D.InterpolationMode.Bilinear;
                            g.DrawImage(obmp, 0, 0, imageType.Width, imageType.Height);
                            obmp.Dispose();
                            g.Dispose();

                            if (bmp.Width != imageType.Width || bmp.Height != imageType.Height ||
                                    bmp.PixelFormat != PixelFormat.Format24bppRgb)
                                throw new ScribblerDataException("Bitmap from JPEG had wrong size or format");

                            // Copy frame
                            BitmapData bitmapData = bmp.LockBits(new Rectangle(0, 0, bmp.Width, bmp.Height),
                                System.Drawing.Imaging.ImageLockMode.ReadOnly, System.Drawing.Imaging.PixelFormat.Format24bppRgb);
                            responseData = new byte[imageType.Width * imageType.Height * 3];
                            System.Runtime.InteropServices.Marshal.Copy(
                                bitmapData.Scan0, responseData, 0, imageType.Width * imageType.Height * 3);
                            bmp.UnlockBits(bitmapData);
                        }
                        catch (Exception e)
                        {
                            fault = RSUtils.FaultOfException(e);
                        }

                    }
                }
            }
            else
            {
                fault = RSUtils.FaultOfException(
                        new ArgumentException("Invalid image type: " + get.Body.ImageType, "ImageType"));
            }

            // Send the image response
            if (fault == null)
            {
                if (responseData != null && imageType != null)
                    get.ResponsePort.Post(new ImageResponse()
                        {
                            Width = imageType.Width,
                            Height = imageType.Height,
                            Timestamp = DateTime.Now,
                            Data = responseData
                        });
                else
                    get.ResponsePort.Post(RSUtils.FaultOfException(new Exception("Internal error: in ScribblerBase.GetImageHandler")));
            }
            else
                get.ResponsePort.Post(fault);

            yield break;
        }