Git Product home page Git Product logo

screenshots's Introduction

📷 screenshots

screenshots是一个基于electronreact的截图插件,可以快速地实现截图功能,并支持多种截图操作,例如马赛克、文本、画笔、箭头、椭圆和矩形。此外,还提供了多语言支持,可以轻松地适配不同的语言环境。

在线示例:https://nashaofu.github.io/screenshots/

react-screenshots

特性

  • 双击页面完成截图,触发ok事件,如果未选择截图区域,双击截取全屏,如果选择了截图区域,双击截取选择区域
  • 右键点击取消截图,触发cancel事件
  • 多语言支持
  • 截图操作:马赛克、文本、画笔、箭头、椭圆、矩形

electron-screenshots

electron-screenshotsscreenshots的一个子项目,提供了与electron截图相关的功能。

安装

NPM

react-screenshots

react-screenshotsscreenshots的另一个子项目,提供了与react相关的截图界面插件,可以与electron-screenshots渲染进程界面配合使用,当然也可以单独使用。

安装

NPM

screenshots's People

Contributors

1337-ishaan avatar archergu avatar dependabot[bot] avatar imndx avatar kenan2002 avatar mlmdflr avatar nashaofu avatar rhwoodpecker avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar

screenshots's Issues

希望可以双击屏幕保存

首先非常感谢作者的贡献,自己之前写了一个问题太多了,另外希望可以加一个双击屏幕保存的功能

拉取截图的时候屏幕会抖动

首先感谢大佬的分享,插件很好用!
我现在遇到的问题是这样的,在win10的electron中截屏,拖动的时候选中框周围的分辨率会发生变化,造成一种抖动的效果,猜测是因为canvas绘图的时候分辨率变化导致的,但是在mac里目前没有发现这个情况
希望大佬看一下这个问题

Windows上中文输入的时候候选字位置不对

Windows上中文输入的时候候选字位置不对

image

另外就是双击保存这个能否加个配置选项,可以配置掉,现在经常误操作。可能是双击判断的有问题,经常两次间隔较长的单击的时候就保存了

执行截图,可以截图,但是截图的canvas和 取消 完成按钮不显示

image

app.on('ready', () => {
      session.defaultSession.cookies.remove('http://crmapi.wwj.fanwe.com', '_token', () => {
        console.log('清除完成')
      })
      this.createWeChatWindow()
      this.createTrayLogin()
      this.initShortcutCapture()
      this.initIPC()
    });

/**
   * 初始化截图
   */
  initShortcutCapture () {
    this.$shortcutCapture = new ShortcutCapture()
    if (process.env.NODE_ENV === 'development') {
      console.log(129999)
      // 下面的代码需要根据实际项目结构修改
      this.$shortcutCapture.dirname = path.resolve(path.join(__dirname, '../../node_modules/shortcut-capture'))
    }

    globalShortcut.register('CmdOrCtrl+Shift+A', () => this.$shortcutCapture.shortcutCapture())
    // 拿取截图后返回信息
    this.$shortcutCapture.on('capture', ({
      dataURL,
      bounds
    }) => {
      this.wechatWindow.webContents.send('capture', dataURL)
    })
  };

在electron 4.0.0调用shortcutCapture.shortcutCapture()方法无反应

博主您好,
clone了博主您的dingtalk的代码执行截图功能是ok的,说明我的电脑(win7,64)支持该截图功能
但在我的项目安装shortcut-capture则无反应,运行没有报错,按下'alt+ctl+a'后屏幕会闪一下然后没后跳出截图的界面。dingtalk使用的electron版本是2.0.15,我的项目使用eletron的版本是4.0.0,请问是否支持该版本?
谢谢

兼容electron6

你好,我在看github的commit时发现已经修复了这个问题,但是最新的npm包(1.2.2)好像好没有发布?

边缘点击无效

在使用了透明窗口后,窗口边框5px以内的区域无法响应任何DOM事件,所以无法从左上角开始截图。

resizing and moving property is always false

when screenshots.startCapture(), resize the selection or move it, then click ok button. from the event ok callback, the CaptureData.Bounds, resizing and moving is always false, like: { resizing: false, x1: 99, y1: 184, x2: 677, y2: 332, moving: false }.

应用闪退

连续调用几次截图,应用会闪退关闭,是什么原因呢

这个支持多屏幕截图吗?

比如同时有3个屏幕(1个主屏,两个外接屏),可以支持按下快捷键后可以在任何一个屏幕上截图。

state issue and touch not working

state of the image while we click onOk is not cleared to clear that we have to refresh the page manually
and was it possible to enable touch based drawing..?

截图不清楚,建议用 getUserMedia 而不是 thumbnail 获取截图

packages/react-screenshots/src/electron/app.js

getSource = (e, display) => {
    getSource(display).then(({ thumbnail }) => {
      // 捕捉完桌面后通知主进程
      ipcRenderer.send('SCREENSHOTS::CAPTURED')
      this.setState({ image: thumbnail.toDataURL() })
    })
}

改造成:

  handleStream = (stream, callback) => {
    document.body.style.opacity = '1'
    // 创建隐藏 video 元素
    const video = document.createElement('video')
    video.autoplay = true
    video.style.cssText = 'position:absolute;top:-10000px;left:-10000px;'
    let loaded = false
    video.onplaying = () => {
      if (loaded) return
      loaded = true
      video.style.height = video.videoHeight + 'px'
      video.style.width = video.videoWidth + 'px'

      const canvas = document.createElement('canvas')
      canvas.width = video.videoWidth
      canvas.height = video.videoHeight
      const ctx = canvas.getContext('2d')
      if (!ctx) return
      ctx.drawImage(video, 0, 0, canvas.width, canvas.height)

      if (callback) {
        callback(canvas.toDataURL('image/png'))
      }

      video.remove()
      try {
        stream.getTracks()[0].stop()
      } catch (e) {
        console.error('getTracks error')
      }
    }
    // 将流传给 video
    video.srcObject = stream
    document.body.appendChild(video)
  };

  getSource = (e, display) => {
    getSource(display).then((source) => {
      if (!source) {
        console.error('未找到屏幕源')
        return
      }
      const config = {
        audio: false,
        video: {
          mandatory: {
            chromeMediaSource: 'desktop',
            chromeMediaSourceId: source.id,
            minWidth: 1280,
            minHeight: 720,
            maxWidth: 8000,
            maxHeight: 8000
          }
        }
      }
      navigator.mediaDevices.getUserMedia(config).then((e) => {
        this.handleStream(e, (dataurl) => {
          ipcRenderer.send('SCREENSHOTS::CAPTURED')
          this.setState({ image: dataurl })
        })
      }).catch(e => {
        console.error('屏幕捕获异常', e)
      })
    })
  }

上面的代码没有运行验证,但是思路大概是这样

打包异常

Electron + React:开发环境可以正常运行,打包出现如下问题

image

electron-vue 调用startCapture()报错

[3998:0324/170642.474907:ERROR:buffer_manager.cc(491)] [.BrowserCompositor-0xc9459f3de00]GL ERROR :GL_INVALID_OPERATION : glBufferData: <- error from previous GL command

image

vuecli3+Vue CLI Plugin Electron Builder

vuecli3+Vue CLI Plugin Electron Builder 这个环境内使用shortcut-capture的readme 代码无反应,vue.config.js 加上
configureWebpack: {
externals: {
'shortcut-capture': "shortcut-capture"
}
},
还是没效果,这个要怎么处理?

electron 9.4.0中 引入报错

Failed to compile with 1 errors
error in ./node_modules/react-screenshots/dist/index.html
Module parse failed: Unexpected token (1:0)
You may need an appropriate loader to handle this file type, currently no loaders are configured to process this file. See https://webpack.js.org/concepts#loaders

<!doctype html><title>react-screenshots</title>很抱歉,没有JavaScript,网站不能正常工作。请启用JavaScript。

<script src="js/app.0407e3e35ed3add17d1e.js"></script>

@ ./node_modules/electron-screenshots/lib/screenshots.js 107:33-85
@ ./src/main/background.js
@ multi ./src/main/background.js

Not allowed to load local resource

你好,请问下我调用截屏接口时,报错Not allowed to load local resource,之前我是设置webSecurity,但是install的包我也不好在源码的地方加代码,请问下那这个该如何处理呢

electron-vue-cli4整合启动就报错

Module parse failed: Unexpected token (1:0)
You may need an appropriate loader to handle this file type, currently no loaders are configured to process this file. See https://webpack.js.org/concepts#loaders

<!doctype html><title>react-screenshots</title>很抱歉,没有JavaScript,网站不能正常工作。请启用JavaScript。

<script src="js/app.ba516492ce39f1719cc8.js"></script>

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.