我正在使用 Selenium 和 Google Chrome 驱动程序以编程方式打开页面。每个页面上都有一个我想下载的动态生成的图像。目前,我正在等待页面完成加载,然后获取图像 URL 并使用 System.Net.WebClient 下载它。
效果很好,只是我要下载图像两次 - 一次在浏览器中,一次使用 WebClient。问题是每个图像大约为 15MB,下载两次就会很快增加。
那么 - 是否可以直接从 Google Chrome 获取图像?
一种方法是使用 webdriver 执行的 javascript 获取图像的 Base64 字符串。然后您可以将图像的 base64string 保存到文件中。
基本上,如果你的图像是
<img id='Img1' src='someurl'>
然后你可以像这样转换它
var base64string = driver.ExecuteScript(@"
var c = document.createElement('canvas');
var ctx = c.getContext('2d');
var img = document.getElementById('Img1');
c.height=img.naturalHeight;
c.width=img.naturalWidth;
ctx.drawImage(img, 0, 0,img.naturalWidth, img.naturalHeight);
var base64String = c.toDataURL();
return base64String;
") as string;
var base64 = base64string.Split(',').Last();
using (var stream = new MemoryStream(Convert.FromBase64String(base64)))
{
using (var bitmap = new Bitmap(stream))
{
var filepath = Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "ImageName.png");
bitmap.Save(filepath, ImageFormat.Png);
}
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)