2 回答

TA貢獻1887條經驗 獲得超5個贊
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
希望對您有所幫助或幫助您入門。

TA貢獻1804條經驗 獲得超2個贊
既然您提到您在“簽名”組件中使用您的畫布,ctx
那么您所指的可能是CanvasRenderingContext2D
.
您可以將 aCanvasRenderingContext2D
視為一個有狀態的繪圖機器人,它可以在Canvas
創建它的實例上進行繪圖。您可以在機器人上設置屬性,例如油漆顏色和畫筆寬度,然后調用它的方法來移動它并繪制到Canvas
它所屬的位置。
與所有瀏覽器 API 一樣,Mozilla Developer Network 可能是您學習的最佳參考,因為它們具有“如何”以及“所有內容列表”,甚至“X 在 Y 瀏覽器中工作”類型的文檔。此鏈接應該可以幫助您入門!
https://developer.mozilla.org/en-US/docs/Web/API/CanvasRenderingContext2D
添加回答
舉報