HTML5 画布是一个功能丰富的东西,但出于测试目的,需要查看的toDataURL
方法是https://developer.mozilla.org/en-US/docs/Web/API/HTMLCanvasElement/toDataURL方法,它会给你一个表示画布内容图像的字符串。您可以将此字符串传递回 Puppeteer/node 上下文并检查它以查看画布是否正确(可能通过将其转换回图像或数组)。
此外,getImageData
方法https://developer.mozilla.org/en-US/docs/Web/API/CanvasRenderingContext2D/getImageData将直接获取图像数组,但您必须转换 ImageData https://developer.mozilla.org/ en-US/docs/Web/API/ImageData Uint8ClampedArray
到一个列表,以便将它从“浏览器”传递到“节点”上下文(我认为)
// This runs in the browser context
var get_canvas_data_json_object = function() {
// get the 4 by 4 upper left pixel values from the canvas_context
var image_data = canvas_context.getImageData(0,0,4,4);
var data_array = image_data.data;
// 4 8-bit RGBA color values by 4 rows by 4 columns as a serializable list
var data_list = Array.from(data_array);
return data_list;
};
然后像这样从 puppeteer 调用这个函数
// this runs in the puppeteer/node context
const data = await page.evaluate("get_canvas_data_json_object()")
这是一个类似的工作示例
https://github.com/flatironinstitute/radiation_viz
它在浏览器上下文中从 WebGL 画布获取数据:
https://github.com/flatironinstitute/radiation_viz/blob/master/docs/main.js#L322
并在 puppeteer/node 上下文中读取它:
https://github.com/flatironinstitute/radiation_viz/blob/master/image_capturer/scrape_images.js#L66
希望对您有所帮助或帮助您入门。