无头浏览器在不损失图像质量的情况下获取图像的数据URI

问题描述 投票:0回答:1

我正在尝试使用无头的Chrome浏览器在本地保存验证码,不想截图也不会丢失验证码的质量。

我想出的方法是将图像转换为data-URI,然后将其写入文件。

我尝试以下代码,它确实有效,并为我保存了图像。问题是,我得到的验证码不如我刚刚下载或拍摄屏幕截图的验证码好。

captcha_img_element = browser.find_element_by_xpath("//span[text()='some text']//img")

img_base64 = browser.execute_script("""
    var ele = arguments[0];
    var cnv = document.createElement('canvas');
    cnv.width = ele.width; cnv.height = ele.height;
    cnv.getContext('2d').drawImage(ele, 0, 0);
    return cnv.toDataURL('image/jpeg').substring(22);    
    """, captcha_img_element)

with open("captcha_js.png", 'wb') as f:
    f.write(base64.b64decode(img_base64))

高质量的一个:

<<

我通过js代码获得的代码:

<<

它们看起来相同,但是当您放大它们时,像素不同。

因此,如何获得第一个的数据URI(高质量),或者有没有其他方法而不使用数据URI(在无头浏览器模式下)

我正在尝试使用无头的Chrome浏览器在本地保存验证码,不想截图也不会丢失验证码的质量。我想出的方法是将图像转换为...

javascript python selenium-chromedriver data-uri
1个回答
0
投票
© www.soinside.com 2019 - 2024. All rights reserved.