首页 > 解决方案 > 异常 gecko.utils.saveimage.convertimagetopng

问题描述

此代码对 geckofx33 有效,但对于 geckofx45 和 60 我有一个例外。(附加信息:值不能为空。在 gecko45 中)或(附加信息:编译脚本失败。在 gecko 60 中)。请帮我处理这些异常。这些异常与函数有关:Gecko.Utils.SaveImageElement.ConvertGeckoImageElementToPng(geckoWeb, image, (float)0, (float)0, 200, 70);

private void LoadCapcha()
        {            
            foreach (var element in geckoWeb.Document.GetElementsByTagName("img"))
            {
                if (element.GetAttribute("id") == "CaptchaImage")
                {
                    Gecko.DOM.GeckoImageElement image = (Gecko.DOM.GeckoImageElement)element;
                    byte[] byteImage = Gecko.Utils.SaveImageElement.ConvertGeckoImageElementToPng(geckoWeb, image, (float)0, (float)0, 200, 70);
                    File.WriteAllBytes("test.png", byteImage);
                    pictureCapchaBox.Image = Image.FromStream(new MemoryStream(byteImage));
                }
            }
        }

我希望图像元素显示在pictureCapchaBox 中。

标签: c#geckofx

解决方案


看起来 GeckoFX-45 中存在一个错误,阻止您在 iframe 中捕获图像元素

建议的解决方法是改用ImageCreator该类:

Gecko.ImageCreator ic = new Gecko.ImageCreator(GeckoWebBrowser1);
ic.CanvasGetPngImage(img.OffsetLeft, img.OffsetTop, img.Width, img.Height);

推荐阅读