Javascript electron JS中的capturePage
这是我的密码。我想拍一张浏览器窗口的截图。但它并没有像预期的那样截图。窗户在屏幕外。我想在页面加载后尽快截图,并将其转换为PNG。有人能帮忙吗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
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()})有任何更新吗?如果你觉得这很有用,请投票并接受,这样其他人可以很容易地找到:)嗨。。我把截图原样传给了回叫,成功了。多谢各位