electron实现截图(一)

在electron中实现截图有以下几种方法,接下来文章主要介绍的是第三种,也是我实际用的有一定开发成本但是很简单:

1.通过外部的工具进行截图;优点:代码逻辑少,基本没有开发成本;缺点:工具不好找,无法自定义工具栏样式,因为底层封装好的没法改css。

2.创建新窗口,用canvas绘制画布,进行截图,一一实现工具栏每个功能;优点:自已动手,相当灵活;缺点:代码多难写。

3.先截一张全屏的图,然后新建一个窗口将截好的图作为这个窗口页面的背景图片,通过前端的方法(有依赖)对这个页面进行页面的截图;优点:代码简单,因为截图依赖是前端的可以修改css,包括工具栏小图标之类的;缺点:由于实际先进行了一次截图并且加载到页面背景图片,所以有一定延迟。

思路:

1.通过desktopCapturer进行桌面截图,将图片放到指定目录;

2.打开新窗口,加载指定目录图片作为整个窗口页面背景,新窗口设置最大宽高,不可缩放,并且要覆盖windows底部任务栏。

3.图片加载好后通过前端依赖js-web-screen-shot对页面进行截图,记得要等图片加载好后调用截图方法不然截的就是空白的,这个依赖有确认取消回调,回调里面关闭窗口,关闭窗口时记得检查里面有没有进行监听的一些方法,记得移除,不然会报主进程的错误。

4.截图好之后记得将第一步生成的图片删掉,不然会占据空间。

5.此时图片就截好了,可以到qq或者微信的输入框或者富文本里面粘贴一下,看看效果,如果要在自己的项目里面显示的话还需要封装输入框,封装输入框的话会在之后的文章讲到。

具体的代码会在下一篇文章贴出来以及讲解,也会发布在我的微信公众号:程序猿wwtx。

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
要在 Electron + Vue 中实现截图,你可以使用 Electron 中的 desktopCapturer 模块来获取屏幕截图。以下是一些步骤: 1. 在你的 Vue 组件中引入 Electron 模块: ```javascript const { desktopCapturer } = require('electron') ``` 2. 创建一个函数来获取屏幕截图。这个函数可以使用 desktopCapturer 模块来获取桌面上的媒体源并将其转换为可用的图像。在这个函数中,你可以使用 Canvas API 或其他图像处理库来对图像进行操作。 ```javascript async function captureScreen() { const sources = await desktopCapturer.getSources({ types: ['screen'] }) const source = sources[0] const stream = await navigator.mediaDevices.getUserMedia({ audio: false, video: { mandatory: { chromeMediaSource: 'desktop', chromeMediaSourceId: source.id, minWidth: 1280, maxWidth: 1280, minHeight: 720, maxHeight: 720 } } }) const videoTrack = stream.getVideoTracks()[0] const imageCapture = new ImageCapture(videoTrack) const bitmap = await imageCapture.grabFrame() // 在这里对 bitmap 进行处理 } ``` 3. 在你的 Vue 组件中创建一个函数来触发屏幕截图函数,并将截图显示在页面上。你可以使用 canvas 元素来显示图像。 ```javascript methods: { async takeScreenshot() { const canvas = this.$refs.canvas const context = canvas.getContext('2d') context.clearRect(0, 0, canvas.width, canvas.height) const bitmap = await captureScreen() canvas.width = bitmap.width canvas.height = bitmap.height context.drawImage(bitmap, 0, 0) } } ``` 4. 在你的 Vue 组件中添加一个 canvas 元素来显示截图: ```html <canvas ref="canvas"></canvas> ``` 这样就可以在 Electron + Vue 中实现截图了。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值