Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/437.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript electron JS中的capturePage_Javascript_Node.js_Electron - Fatal编程技术网

Javascript electron JS中的capturePage

Javascript electron JS中的capturePage,javascript,node.js,electron,Javascript,Node.js,Electron,这是我的密码。我想拍一张浏览器窗口的截图。但它并没有像预期的那样截图。窗户在屏幕外。我想在页面加载后尽快截图,并将其转换为PNG。有人能帮忙吗 const {BrowserWindow} = require('electron') // Offscreen BrowserWindow let offscreenWindow // Exported readItem function module.exports = (url, callback) => { // Create o

这是我的密码。我想拍一张浏览器窗口的截图。但它并没有像预期的那样截图。窗户在屏幕外。我想在页面加载后尽快截图,并将其转换为PNG。有人能帮忙吗

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)
  console.log("readitem")

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

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

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

        fs.writeFile('test.png', image.toPNG(), (err) => {
            if (err) throw err
            console.log('It\'s saved!')})})


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


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

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

  })}

我用你的文件创建了这个文件。它的工作和测试。你需要使用

offscreenWindow.webContents.capturePage()。然后(image=>{//something done})
然后使用
fs.writeSync()将映像同步写入dis。

screenshot.js

const { BrowserWindow } = require('electron')
const fs = require('fs')
const path = require('path')
// Offscreen BrowserWindow
let offscreenWindow
let nativeImage
// 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)
    console.log("readitem")

    // Wait for content to finish loading
    offscreenWindow.webContents.on('did-stop-loading', async() => {

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

        // Get screenshot (thumbnail)
        nativeImage = await offscreenWindow.webContents.capturePage().then(image => {
            fs.writeFileSync('test.png', image.toPNG(), (err) => {
                if (err) throw err
            })
            console.log('It\'s saved!')
            return image.toDataURL()

        })
        let obj = { title:title, 
            url: url,
            image: nativeImage }
        callback(obj) 
        // Clean up
        offscreenWindow.close()
        offscreenWindow = null

    })
}
const {app, BrowserWindow, ipcMain } = require('electron')
const path = require("path")
const fs = require("fs")
const screenshot = require("./screen")
let  window 

function createWindow () {
    window = new BrowserWindow({
    width: 800,
    height: 600,
    webPreferences: {
      nodeIntegration: true
    }
  })
  window.loadFile("./index.html")
  window.webContents.openDevTools()
}

app.whenReady().then(createWindow)

app.on('window-all-closed', () => {
  if (process.platform !== 'darwin') {
    app.quit()
  }
})

ipcMain.on("start::screenshot", (event,arg) => {
  console.log("Starting")
  screenshot(arg, (reply) => {console.log("It's completed", reply)})
})
const { ipcRenderer } = require('electron')

function start() {
    console.log("start")
    let args = "https://google.com"
    ipcRenderer.send('start::screenshot',args)
}
main.js

const { BrowserWindow } = require('electron')
const fs = require('fs')
const path = require('path')
// Offscreen BrowserWindow
let offscreenWindow
let nativeImage
// 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)
    console.log("readitem")

    // Wait for content to finish loading
    offscreenWindow.webContents.on('did-stop-loading', async() => {

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

        // Get screenshot (thumbnail)
        nativeImage = await offscreenWindow.webContents.capturePage().then(image => {
            fs.writeFileSync('test.png', image.toPNG(), (err) => {
                if (err) throw err
            })
            console.log('It\'s saved!')
            return image.toDataURL()

        })
        let obj = { title:title, 
            url: url,
            image: nativeImage }
        callback(obj) 
        // Clean up
        offscreenWindow.close()
        offscreenWindow = null

    })
}
const {app, BrowserWindow, ipcMain } = require('electron')
const path = require("path")
const fs = require("fs")
const screenshot = require("./screen")
let  window 

function createWindow () {
    window = new BrowserWindow({
    width: 800,
    height: 600,
    webPreferences: {
      nodeIntegration: true
    }
  })
  window.loadFile("./index.html")
  window.webContents.openDevTools()
}

app.whenReady().then(createWindow)

app.on('window-all-closed', () => {
  if (process.platform !== 'darwin') {
    app.quit()
  }
})

ipcMain.on("start::screenshot", (event,arg) => {
  console.log("Starting")
  screenshot(arg, (reply) => {console.log("It's completed", reply)})
})
const { ipcRenderer } = require('electron')

function start() {
    console.log("start")
    let args = "https://google.com"
    ipcRenderer.send('start::screenshot',args)
}
renderer.js

const { BrowserWindow } = require('electron')
const fs = require('fs')
const path = require('path')
// Offscreen BrowserWindow
let offscreenWindow
let nativeImage
// 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)
    console.log("readitem")

    // Wait for content to finish loading
    offscreenWindow.webContents.on('did-stop-loading', async() => {

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

        // Get screenshot (thumbnail)
        nativeImage = await offscreenWindow.webContents.capturePage().then(image => {
            fs.writeFileSync('test.png', image.toPNG(), (err) => {
                if (err) throw err
            })
            console.log('It\'s saved!')
            return image.toDataURL()

        })
        let obj = { title:title, 
            url: url,
            image: nativeImage }
        callback(obj) 
        // Clean up
        offscreenWindow.close()
        offscreenWindow = null

    })
}
const {app, BrowserWindow, ipcMain } = require('electron')
const path = require("path")
const fs = require("fs")
const screenshot = require("./screen")
let  window 

function createWindow () {
    window = new BrowserWindow({
    width: 800,
    height: 600,
    webPreferences: {
      nodeIntegration: true
    }
  })
  window.loadFile("./index.html")
  window.webContents.openDevTools()
}

app.whenReady().then(createWindow)

app.on('window-all-closed', () => {
  if (process.platform !== 'darwin') {
    app.quit()
  }
})

ipcMain.on("start::screenshot", (event,arg) => {
  console.log("Starting")
  screenshot(arg, (reply) => {console.log("It's completed", reply)})
})
const { ipcRenderer } = require('electron')

function start() {
    console.log("start")
    let args = "https://google.com"
    ipcRenderer.send('start::screenshot',args)
}

Windows:10电子版:8.2.1感谢您指导我。如果我想在转换后在回调中传递屏幕截图,比如:image.toDataURL()这是我的代码:let offscreenWindow module.exports=(url,callback)=>{offscreenWindow=new BrowserWindow({width:500,height:500,show:false,webPreferences:{offscreen:true}})offscreenWindow.loadURL(url)offscreenWindow.WebContent.on('did-finish-load',e=>{let title=offscreenWindow.getTitle()offscreenWindow.WebContent.capturePage(image=>{let screenshot=image.toDataURL()回调({title,screenshot,url})offscreenWindow.close()})有任何更新吗?如果你觉得这很有用,请投票并接受,这样其他人可以很容易地找到:)嗨。。我把截图原样传给了回叫,成功了。多谢各位