electron 截取图片

剪贴板:clipboard(主进程和渲染进程都能使用)

const {clipboard} =  require('electron')
//剪贴板写入
  clipboard.writeText('hello electron') 
  //读取剪贴板内容
  console.log(clipboard.readText())

在这里插入图片描述

//  preload-js/index.js 剪贴板读取本地图片
const cloneImg = ()=>{
  return new Promise((resolve)=>{
    clipboard.writeImage(path.resolve(__dirname,'../assets/icon.png'))
    const nativeImage =  clipboard.readImage()
    resolve(nativeImage.toDataURL())
  })
}

抓取图片 desktopCapturer

desktopCapturer.js
const { ipcMain,desktopCapturer } = require('electron')
//从屏幕获取图片
const capture = ()=>{
  return desktopCapturer.getSources({
    types:['window','screen'],
    thumbnailSize:{
      width:1366,
      height:768
    }
  })
}
const getSource = (win)=>{
  ipcMain.handle('get-img-catch',async ()=>{
    console.log('get-img-catch')
    let sources = await capture()
    console.log(sources)
    for(const source of sources){
      if(source.name === 'Entire Screen'){
        return source
      }
    }
  })
}
module.exports = getSource
preload-js
//preload-js 部分
const catchImg = async ()=>{
  //给主程序抛发事件,让主程序抓取图片
  const result = await ipcRenderer.invoke('get-img-catch')
  // 处理图片
  const str = result.thumbnail.crop({ x: 0, y: 0, width: 1366, height: 768 })
  return str.toDataURL()
}
main.js
const { app, BrowserWindow, Menu ,clipboard } = require('electron')
const path = require('path')

//引入主菜单和右键单击菜单
const contextMenu = Menu.buildFromTemplate(require('./menu/contextMenu'))    
const mainMenu = Menu.buildFromTemplate(require('./menu/mainMenu'))  

//导入视频截取功能 
const getSource = require('./controller/desktopCapturer')

//引入托盘
const createTray = require('./controller/tray')

const  createWindow = async ()=>{
  const win = new BrowserWindow({
    width:800,
    height:600,
    webPreferences:{
      preload: path.resolve(__dirname,'./preload-js')
    }
  })
  win.loadFile('./renderer/index.html')

  //挂载右键单击菜单
  win.webContents.on('context-menu',()=>{
    contextMenu.popup()
  })
  win.webContents.openDevTools()

  //挂载托盘
  createTray(app,win)
  // 挂载截屏方法
  getSource(win)
}

app.whenReady().then(()=>{
  createWindow()
  app.on('activate',()=>{
    if(BrowserWindow.getAllWindows().length === 0){
      createWindow()
    }
  })
})
Menu.setApplicationMenu(mainMenu)

//适配mac 退出再次打开
app.on('window-all-closed',()=>{
  if(process.platform !== 'darwin'){
    app.quit()
  }
})

在这里插入图片描述
点击抓取图片,获取全频截图
在这里插入图片描述
desktopCapturer.getSources()通过type获取不同屏幕可以是某个应用的界面

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值