[英]How can I access to the monitor image data?
您好,我目前正在使用 Electron.js 制作桌面應用程序。 同時,我需要截屏(包括鼠標光標)的功能,但這對我來說是個問題,因為我不知道該怎么做。
我認為我無法解決這個問題的原因是我對操作系統一無所知。 我認為“截取屏幕截圖”的意思是“將圖像數據顯示在計算機顯示器上”,但我如何訪問它?
起初我嘗試Electron.BrowserWindow.capturePage()
但它的結果不符合我的要求。 這是因為兩個原因:1)我的應用程序有一個透明的背景,如果我截屏,任何透明區域都會變成黑色。 2)鼠標cursor沒有被一起捕獲。
同時,我知道一些 API 的存在,例如 Screen Capture API 和 Media Capture and Streams API(在 web 瀏覽器中),也許我可以嘗試一下,因為我正在使用 Electron.js 和 Electron.js 使用 Chromium 88369888.js瀏覽器和 web 瀏覽器具有這些 API 的實現。
但是,這些 API 處理的是媒體流(= 視頻)仍然是一個問題,這不適合我的情況。 當然,我認為可以以某種方式從媒體 stream 中只取出一幀(?),但我認為這是一種過度工作,因為我想要的只是一個屏幕截圖。
同時,因為 Electron.js 也使用 Node.js,我認為也可以通過某種方式調用 Windows API(也許通過外部 Function 接口?)或調用child_process.exec()
以截取屏幕截圖。
如何訪問監視器圖像數據? 這樣我就可以實現“滿足我要求的截圖功能——透視&鼠標光標”(如果需要使用第三方庫,盡可能少)。
什么計算將要顯示在我的計算機顯示器上的最終圖像數據? 看來這是我的顯卡的作品,因為我的顯示器和顯卡是通過電纜相互連接的。
4. 雜項好奇心(與題目關系不大)
...然而,透明區域如何、為何以及在何處處理為#000000
顏色是另一個好奇心。
同時有趣的是,有些程序不允許我截取它們上面的內容——程序所在的區域看起來是黑色的。 此類程序的開發人員如何實現這一點?
感謝您閱讀我的問題。
經過一些 inte.net 搜索后,我發現很難訪問和獲取顯示數據(特別是來自我的顯卡的視頻 ram數據)。 所以我決定使用一個變通辦法——這是一句眾所周知的格言,“萬事通羅馬”。
意思是,
但是,在我的情況下,我實際上不需要將屏幕截圖保存為文件,所以我認為只需繪制自定義鼠標 cursor 圖像就足夠了,隱藏原始鼠標 cursor 圖像,使其跟隨鼠標 cursor,然后截取屏幕截圖手動按鍵。 (我認為使用 PrintScreen 按鍵截取屏幕截圖,從剪貼板獲取屏幕截圖數據並進行一些圖像處理,例如添加與鼠標相關的效果也是一個可行的選擇 cursor。
※ 我看到一個模擬“按鍵”( SendKey()
)的代碼來截取屏幕截圖,我認為這是一個很好的方法,因為不需要手動按鍵。
我想對這個主題感興趣的人可能會從以下鏈接中找到幫助(數字順序不代表重要性):
提到的關鍵字: GetDC()、BitBlt()、CAPTUREBLT 標志、GDI
提到的關鍵字: DirectX,緩沖區
提到的關鍵字:鼠標cursor,cursor圖像,熱點
提到的關鍵詞: PowerShell,CopyFromScreen()
Q/A 關於訪問視頻 memory
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.