Beispiel #1
0
        public Bitmap getFirstImage()
        {
            Logger.Info("Start get Image");

            IHTMLDocument2 doc = (IHTMLDocument2)webBrowser.Document.DomDocument;

            foreach (IHTMLImgElement img in doc.images)
            {
                IHTMLElementRenderFixed render = (IHTMLElementRenderFixed)img;
                Bitmap   bmp = new Bitmap(img.width, img.height);
                Graphics g   = Graphics.FromImage(bmp);
                IntPtr   hdc = g.GetHdc();
                render.DrawToDC(hdc);
                g.ReleaseHdc(hdc);
                Logger.Info("Stop get Image");
                return(bmp);
                //bmp.Save(@"C:\nameProp.bmp");


                //imgRange.add((IHTMLControlElement)img);

                //imgRange.execCommand("Copy", false, null);

                //using (Bitmap bmp = (Bitmap)Clipboard.GetDataObject().GetData(DataFormats.Bitmap))
                //{
                //    bmp.Save(@"C:\" + img.nameProp);
                //}
            }
            return(null);
        }
Beispiel #2
0
        public static Image CopyImageAlt(WebBrowser webBrowser, HtmlElement elem)
        {
            IHTMLImgElement         img    = (IHTMLImgElement)elem.DomElement;
            IHTMLElementRenderFixed render = (IHTMLElementRenderFixed)img;

            Bitmap   bmp = new Bitmap(elem.OffsetRectangle.Width, elem.OffsetRectangle.Height);
            Graphics g   = Graphics.FromImage(bmp);
            IntPtr   hdc = g.GetHdc();

            render.DrawToDC(hdc);
            g.ReleaseHdc(hdc);
            return(bmp);
        }
Beispiel #3
0
        public Bitmap GetImage(IHTMLImgElement img)
        {
            IHTMLElementRenderFixed render = (IHTMLElementRenderFixed)img;

            Bitmap bmp = new Bitmap(img.width, img.height);

            Graphics g   = Graphics.FromImage(bmp);
            IntPtr   hdc = g.GetHdc();

            render.DrawToDC(hdc);
            g.ReleaseHdc(hdc);

            return(bmp);
        }
Beispiel #4
0
        /// <summary>
        /// 使用该方法获取图片时,可能无法获取到图片的原始尺寸,只能获取其在网页中所显示的尺寸,因此可能会被缩小或放大过了。
        /// </summary>
        /// <param name="imgTag">img元素</param>
        /// <returns>图片</returns>
        public static Bitmap 通过区域截屏技术获取图片(this HtmlElement imgTag)
        {
            IHTMLImgElement         img    = (IHTMLImgElement)imgTag.DomElement;
            IHTMLElementRenderFixed render = (IHTMLElementRenderFixed)img;

            Bitmap   bmp = new Bitmap(imgTag.OffsetRectangle.Width, imgTag.OffsetRectangle.Height);
            Graphics g   = Graphics.FromImage(bmp);
            IntPtr   hdc = g.GetHdc();

            render.DrawToDC(hdc);
            g.ReleaseHdc(hdc);

            return(bmp);
        }
Beispiel #5
0
        public Bitmap GetImage(string id)
        {
            HtmlElement             e      = webBrowser.Document.GetElementById(id);
            IHTMLImgElement         img    = (IHTMLImgElement)e.DomElement;
            IHTMLElementRenderFixed render = (IHTMLElementRenderFixed)img;

            Bitmap   bmp = new Bitmap(e.OffsetRectangle.Width, e.OffsetRectangle.Height);
            Graphics g   = Graphics.FromImage(bmp);
            IntPtr   hdc = g.GetHdc();

            render.DrawToDC(hdc);
            g.ReleaseHdc(hdc);
            return(bmp);
        }
Beispiel #6
0
        public Bitmap getFirstImage()
        {
            IHTMLDocument2 doc = (IHTMLDocument2)webBrowser1.Document.DomDocument;

            foreach (IHTMLImgElement img in doc.images)
            {
                if (img.readyState == "uninitialized")
                {
                    throw new Exception("Cupture Img is not shown");
                }
                IHTMLElementRenderFixed render = (IHTMLElementRenderFixed)img;
                Bitmap   bmp = new Bitmap(img.width, img.height);
                Graphics g   = Graphics.FromImage(bmp);
                IntPtr   hdc = g.GetHdc();
                render.DrawToDC(hdc);
                g.ReleaseHdc(hdc);
                return(bmp);
            }
            return(null);
        }
Beispiel #7
0
        public void SaveImageFromElement(string xpath, string path)
        {
            Bitmap     bmp = null;
            WebBrowser wb  = (WebBrowser)GetCurrentWB();

            if (wb != null)
            {
                HtmlElement e = GetElementByXpath(wb.Document, xpath);
                if (e != null)
                {
                    mshtml.IHTMLElement     element = (mshtml.IHTMLElement)e.DomElement;
                    IHTMLElementRenderFixed render  = (IHTMLElementRenderFixed)element;

                    bmp = new Bitmap(element.offsetWidth, element.offsetHeight);
                    Graphics g   = Graphics.FromImage(bmp);
                    IntPtr   hdc = g.GetHdc();
                    render.DrawToDC(hdc);
                    g.ReleaseHdc(hdc);
                    bmp.Save(path);
                }
            }
        }
Beispiel #8
0
        private void Timer_Tick(object sender, EventArgs e)
        {
            try
            {
                timer.Enabled = false;
                if (webBrowser.Document != null && (webBrowser.ReadyState == WebBrowserReadyState.Complete || webBrowser.ReadyState == WebBrowserReadyState.Interactive))
                {
                    HtmlElementCollection elements = webBrowser.Document.GetElementsByTagName("img");
                    if (elements != null && elements.Count > 0)
                    {
                        //Monitor.Enter(lockObject);
                        IHTMLImgElement         img    = (IHTMLImgElement)elements[0].DomElement;
                        IHTMLElementRenderFixed render = (IHTMLElementRenderFixed)img;
                        Bitmap   bitmap = new Bitmap(img.width, img.height);
                        Graphics g      = Graphics.FromImage(bitmap);
                        IntPtr   hdc    = g.GetHdc();
                        render.DrawToDC(hdc);
                        g.ReleaseHdc(hdc);

                        using (MemoryStream memoryStream = new MemoryStream())
                        {
                            bitmap.Save(memoryStream, System.Drawing.Imaging.ImageFormat.Jpeg);
                            this.CaptureImage = memoryStream.ToArray();
                        }
                    }
                }
            }
            catch (Exception exc)
            {
                Logger.E(exc);
            }
            finally
            {
                //Monitor.Exit(lockObject);
                webBrowser.Refresh();
                timer.Enabled = true;
            }
        }