getContext(2d)& drawImage> toDataURL>不受欢迎的问题

时间:2017-06-14 09:40:38

标签: javascript c# jquery

这是c#方法和js函数:

    public static string JsGetImgBase64String(Awesomium.Windows.Forms.WebControl wb, string getElementQuery, bool leaveOnlyBase64Data = true)
    {
        string data = wb.ExecuteJavascriptWithResult(@"
                                    function getImgBase64String(img)
                                    {
                                        alert(img.attr('src'));
                                        var cnv = document.createElement('CANVAS');
                                        var ctx = cnv.getContext('2d');
                                        ctx.drawImage(img, 0, 0);
                                        return cnv.toDataURL();
                                    }
                        " + String.Format("getImgBase64String({0});", getElementQuery));

        if (data == "undefined")
            return string.Empty;

        if (leaveOnlyBase64Data && data.Contains(","))
        {
            data = data.Substring(data.IndexOf(",") + 1);
        }

        return data;
    }

这是图片:

@"$(""img[src$='/Appointment/ShowCaptchaImage']"")"

以下是提醒结果:/Appointment/ShowCaptchaImage

这是该函数的结果(无错误):The return value of that function is undefiend

现在问题是什么? 如何使用jquery或javascript修复undefiend问题?

<小时/> 这是该方法的c#调用?

string imgBase64 = JsGetImgBase64String(webControl_1, @"$(""img[src$='/Appointment/ShowCaptchaImage']"")");
byte[] imgBytes = Convert.FromBase64String(imgBase64);

我在byte[] imgBytes =上有错误!

1 个答案:

答案 0 :(得分:1)

tsconfig.json是一个jquery函数。由于这有效,您可以放心地假设您正在使用jquery对象。

img.attr('src')不接受jquery元素。

尝试使用ctx.drawImage()代替。使用ctx.drawImage(img[0], 0, 0);可确保获得实际的DOM元素,而不是JQuery元素。