Electron使用指南 - [12] 获得屏幕快照

1、完善主进程处理

从渲染进程中拿到 url 后,通过 offscreen 获取屏幕快照。 在项目根目录下,创建 readItem.js

// /readItems

// Modules
const {BrowserWindow} = require('electron')

// Offscreen BrowserWindow
let offscreenWindow

// Exported readItem function
module.exports = (url, callback) => {

  // Create offscreen window
  offscreenWindow = new BrowserWindow({
    width: 500,
    height: 500,
    show: false,
    webPreferences: {
      offscreen: true
    }
  })

  // Load item url
  offscreenWindow.loadURL(url)

  // Wait for content to finish loading
  offscreenWindow.webContents.on('did-finish-load', e => {

    // Get page title
    let title = offscreenWindow.getTitle()

    // Get screenshot (thumbnail)
    offscreenWindow.webContents.capturePage( image => {

      // Get image as dataURL
      let screenshot = image.toDataURL()

      // Execute callback with new item object
      callback({ title, screenshot, url })

      // Clean up
      offscreenWindow.close()
      offscreenWindow = null
    })
  })
}

2、更新 main.js

/main.js 文件里添加对 readItem.js 的引用:

// Modules
// ...
const readItem = require('./readItem')

// ...

// Listen for new item request
ipcMain.on('new-item', (e, itemUrl) => {

  // remove all codes here.

  // Get new item and send back to renderer
  readItem( itemUrl, item => {
    e.sender.send('new-item-success', item)
  })
})

Guess you like

Origin blog.csdn.net/sdasadasds/article/details/110177730