在一个不支持下载图像或在新标签页中打开它们的页面上,我可以使用Chrome开发人员(工具->网络)右键单击该图像并执行“将图像作为URI复制”。
是否有可能对木偶戏做同样的事情?
我尝试使用一些旨在将图像转换为base64表示形式的Node.js模块,但它们似乎都下载了图像,然后返回base64表示形式。
答案 0 :(得分:4)
是的,您可以使用response.buffer()
获取资源的缓冲区。然后,您可以使用buffer.toString('base64')
将缓冲区转换为base64编码的字符串。
代码示例
以下示例转到google.com
网站,等待第一个PNG资源,然后打印其base64编码的图像。
const puppeteer = require('puppeteer');
(async () => {
const browser = await puppeteer.launch();
const page = await browser.newPage();
const [response] = await Promise.all([
page.waitForResponse(response => response.url().includes('.png')),
page.goto('https://www.google.com/')
]);
const buffer = await response.buffer();
console.log('data:image/png;base64,' + buffer.toString('base64'));
await browser.close();
})();
此代码示例等待单个资源。另外,您可以听response
事件以相同的方式下载多张图片。
答案 1 :(得分:3)
另一个解决方案是:
const base64 = await page.screenshot({ encoding: "base64" })