Awesomium如何在不重新下载的情况下保存加载的图像

如何在Awesomium浏览器中将加载的图像复制或保存到本地磁盘而不重新下载?

有一种下载图像的方法:
http://docs.awesomium.net/html/M_Awesomium_Windows_Controls_WebControl_SaveImageAt.htm

但它有两个问题:

  1. 它重新下载图像。
  2. 它显示一个弹出窗口来保存图像,我不想要它。

此外,javascript中的每一种方式都会重新下载目标图像!
解决办法是什么?
我们如何从缓存文件夹中获取下载的图像?

你可以尝试这样的事情:

///  /// Returns Base64 string of image content. Without redownloading image. If it is not on the same domain, WebSecurity must be set to false. ///  ///  /// Any Javascript query to get an element. /// Examples: /// "document.getElementById('id')" /// "document.getElementsByClassName('name')[0]" /// "document.evaluate(\"//a[contains(@href, 'something')]\", document, null, XPathResult.FIRST_ORDERED_NODE_TYPE, null ).singleNodeValue" (XPath) ///  /// if true, removes "data:image/type;base64," from the beginning of the string /// Base64 string or empty string in case of error public static string JsGetImgBase64String(string getElementQuery, bool leaveOnlyBase64Data = true) { string data = webView.ExecuteJavascriptWithResult(@" function getImgBase64String(img) { 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; } 

用法:

  string imgBase64 = JsGetImgBase64String("document.getElementById('imageId')"); byte[] imgBytes = Convert.FromBase64String(imgBase64 ); 

如果图像不在同一个域中,则可能需要在WebPreferences设置为false