{"id":15527384,"url":"https://github.com/jsoon/electronscreenshot","last_synced_at":"2025-04-23T12:26:56.313Z","repository":{"id":81012876,"uuid":"388449136","full_name":"JSoon/ElectronScreenshot","owner":"JSoon","description":"基于 Electron 开发的截屏软件","archived":false,"fork":false,"pushed_at":"2022-02-09T07:31:40.000Z","size":4615,"stargazers_count":13,"open_issues_count":0,"forks_count":1,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-04-18T14:19:39.174Z","etag":null,"topics":["electron","electronjs","screencapture","screenshot"],"latest_commit_sha":null,"homepage":"","language":"JavaScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/JSoon.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2021-07-22T12:09:25.000Z","updated_at":"2025-01-09T09:12:17.000Z","dependencies_parsed_at":"2023-07-29T15:01:28.128Z","dependency_job_id":null,"html_url":"https://github.com/JSoon/ElectronScreenshot","commit_stats":{"total_commits":93,"total_committers":2,"mean_commits":46.5,"dds":"0.010752688172043001","last_synced_commit":"48b26e6ca6cb241bcc3b9eb9c9d00d4689ed2ba8"},"previous_names":[],"tags_count":1,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/JSoon%2FElectronScreenshot","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/JSoon%2FElectronScreenshot/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/JSoon%2FElectronScreenshot/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/JSoon%2FElectronScreenshot/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/JSoon","download_url":"https://codeload.github.com/JSoon/ElectronScreenshot/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":250432848,"owners_count":21429753,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["electron","electronjs","screencapture","screenshot"],"created_at":"2024-10-02T11:06:04.851Z","updated_at":"2025-04-23T12:26:56.275Z","avatar_url":"https://github.com/JSoon.png","language":"JavaScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"\u003ch1\u003eElectron Screenshot\u003c/h1\u003e\n\n基于 [Electron](https://www.electronjs.org/) 开发的截屏软件.\n\n![demo](./src/assets/image/demo.png)\n\n\u003ch2\u003eContents\u003c/h2\u003e\n\n- [Usage](#usage)\n  - [Prerequisite](#prerequisite)\n  - [Install](#install)\n  - [Import](#import)\n- [Demo Run](#demo-run)\n- [Demo Build](#demo-build)\n- [Features](#features)\n- [Issues](#issues)\n- [Windows 下可能遇到的问题](#windows-下可能遇到的问题)\n  - ['toupper': is not a member of 'std'](#toupper-is-not-a-member-of-std)\n  - [Canvas.obj : error LNK2001: unresolved external symbol \"__declspec\\(dllimport\\) public: class std::shared_ptr\\\u003cclass v8::BackingStore\\\u003e __cdecl v8::ArrayBuffer::GetBackingStore\\(void\\)](#canvasobj--error-lnk2001-unresolved-external-symbol-__declspecdllimport-public-class-stdshared_ptrclass-v8backingstore-__cdecl-v8arraybuffergetbackingstorevoid)\n  - [其他相关问题链接](#其他相关问题链接)\n\n## Usage\n\n### Prerequisite\n\n全局安装 [uglify-js](https://www.npmjs.com/package/uglify-js) (若已安装, 可忽略该步骤).\n\n```bash\nnpm i -g uglify-js\n```\n\n### Install\n\n```bash\nnpm i @financial-freedom/electron-screenshot\n```\n\n### Import\n\n```js\n/**\n * 主进程 main.js\n */\n// 引入模块\nconst { useCapture } = require('@jsoon/electron-screenshot');\n\n// 创建窗口\nconst mainWindow = new BrowserWindow({\n  // Options\n  // ...\n});\n\n// 使用截屏\nuseCapture({\n  mainWindow\n});\n```\n\n## Demo Run\n\n```bash\nnpm run start\n```\n\n## Demo Build\n\n```bash\n# 打包 mac\nnpm run dist:mac\n\n# 打包 win\nnpm run dist:win\n```\n\n构建前请先看[这里](https://zhuanlan.zhihu.com/p/110448415), 解决构建源下载超时的问题.\n\n## Features\n\n- [x] 截屏图片复制到剪切板\n- [x] 截屏选区重置\n- [x] 截屏图片下载\n- [x] 截屏退出\n- [x] 鼠标跟随信息 (当前坐标, 当前屏幕取色) \n- [x] 矩形框工具\n- [x] 椭圆形框工具\n- [x] 箭头工具\n- [x] 画笔工具\n- [x] 马赛克工具 :star_struck:\n- [x] 文字工具\n- [x] 撤销工具 :star_struck:\n\n## Issues\n\n- [ ] [截图图片鼠标无法隐藏](https://github.com/electron/electron/issues/7584)\n- [x] ~~[Mac-10.13.6] 截屏窗口打开后, 由于是simpleFullscreen状态, 系统菜单栏会被隐藏, 退出截屏后仍然处于隐藏状态~~ (已使用非全屏方式规避)\n- [x] [Mac 下构建 Windows 报错: exited with code ERR_ELECTRON_BUILDER_CANNOT_EXECUTE](https://github.com/electron-userland/electron-builder/issues/4629#issuecomment-591312152)\n- 其他兼容性问题待测试\n\n## Windows 下可能遇到的问题\n\n\u003e :warning: 若 canvas 不需要在 Node 环境下运行 (即 Electron 应用主线程), 则无需考虑构建 node-canvas 原生模块构建. 本项目 canvas 运行在渲染进程, 故无需进行原生模块构建.\n\nWindows 下进行 node-canvas 原生模块构建时, 由于 Node, Electron 版本的不同, 可能会导致很多棘手的问题, 这些问题多是涉及到 c++ 和 v8, 因而对于前端开发者而言, 很难定位和解决.\n\n若还不知道如何搭建 node-canvas 原生模块构建环境, 请参考[这里](http://jsoon.fun/front-end/views/blog-electron-node-canvas/index.html).\n\n### ['toupper': is not a member of 'std'](https://github.com/Automattic/node-canvas/issues/1848)\n\n解决方案如下, 修改 `node_modules/canvas/src/util.h` 代码:\n\n```h\n// Line 31\nreturn c1 == c2 || std::toupper(c1) == std::toupper(c2);\n```\n\n修改为:\n\n```h\n// std:: -\u003e ::\nreturn c1 == c2 || ::toupper(c1) == ::toupper(c2);\n```\n\n### [Canvas.obj : error LNK2001: unresolved external symbol \"__declspec\\(dllimport\\) public: class std::shared_ptr\\\u003cclass v8::BackingStore\\\u003e __cdecl v8::ArrayBuffer::GetBackingStore\\(void\\)](https://github.com/nodejs/nan/issues/892)\n\n解决方案如下, 修改 `node_modules/nan/nan_typedarray_contents.h` 代码:\n\n```h\n// Line 36 - 40\n#if (V8_MAJOR_VERSION \u003e= 8)\n  data = static_cast\u003cchar*\u003e(buffer-\u003eGetBackingStore()-\u003eData()) + byte_offset;\n#else\n  data = static_cast\u003cchar*\u003e(buffer-\u003eGetContents().Data()) + byte_offset;\n#endif\n```\n\n修改为:\n\n```h\n// 去掉判断\ndata = static_cast\u003cchar*\u003e(buffer-\u003eGetContents().Data()) + byte_offset;\n```\n\n### 其他相关问题链接\n\n[Electron-rebuild canvas 2.6.1 fails on Windows 10: Canvas.obj : error LNK2001: unresolved external symbol](https://github.com/Automattic/node-canvas/issues/1589)\n\n[[Bug]: Link error for native c++ modules](https://github.com/electron/electron/issues/29893)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fjsoon%2Felectronscreenshot","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fjsoon%2Felectronscreenshot","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fjsoon%2Felectronscreenshot/lists"}