photoshop生成器引入到electron项目(electron与photoshop建立通信)

Photoshop引入了nodejs,在启动的时候,通过pipe调起nodejs运行时核心generator-builtin,通过KLVR机制与ps进行通信和交互,同时会加载用户编写的扩展。

这里记录一下引入时的踩坑过程

generator-core就是它的源码,electron的主进程是nodejs环境,如果可以将core这套代码在electron的主进程中运行,就达到我们建立electron与ps通信的目的了,生成器的功能非常强大,甚至可以获取图像原始数据

(这两套代码非常有年份,10年前的开源项目,还能跑起来兼容2023的ps版本,也是神奇)

下面是地址,分别是generator-core核心代码、core运行的插件demo

具体的原理可以看知乎一位大佬的文章:
https://zhuanlan.zhihu.com/p/643541900

https://github.com/adobe-photoshop/generator-core

https://github.com/adobe-photoshop/generator-getting-started

  1. 首先是将整套核心代码搬到项目中,安装相关依赖(generator-core)

运行electron主进程,发现会报错 Cannot find module 'minimist' 看了一下是optimist库的一个依赖

npm i minimist后再次运行 仍然无法解决(下面1、2是踩坑步骤,可以忽略)

  1. 在index.js直接require一个optimist模块,问题解决,后面发现是因为里面有minimist
  2. 后续出现了module q is not defined
    这时候再require q无效,说明1方案只是一个巧合,将minimist引到了主进程解决了minimist的报错,尝试将路径直接指向node_modules仍然无效,找不到对应的库

后面翻到core的入口文件:

发现他的入口文件改动了module路径指向,导致整个core找不到node_modules

把这里注释掉,问题解决

再次跑electron主进程,发现electron会闪退,可能是一些参数相关的问题

core的运行命令

复制代码
node app.js -v -f path1/path2

百度了一下这种命令是可以通过optimist这个库读取的,搜了一下入口文件,找到了optimist对象

这里将v参数加入改为true,f 填入core运行的插件plugin路径,从项目根目录出发指向plugin目录即可

-v -f的报错解决,但控制台打印出现问题

这里0.1.0有报错,全局搜了一下0.1.0,发现读的是electron的package.json,直接复制core的package.json进去,修改指向的路径

再次运行

插件的documentInfo已经打印成功,本次引入完成

相关推荐
爱吃甜品的糯米团子36 分钟前
JavaScript 正则表达式:选择、分组与引用深度解析
前端·javascript·正则表达式
星尘库1 小时前
抖音自动化-实现给特定用户发私信
前端·javascript·自动化
Jonathan Star1 小时前
Next.js、NestJS、Nuxt.js 是 **Node.js 生态中针对不同场景的框架**
开发语言·javascript·node.js
顾安r2 小时前
11.8 脚本网页 推箱子
linux·前端·javascript·flask
Amewin3 小时前
在vue3+uniapp+vite中挂载全局属性方法
javascript·vue.js·uni-app
玖釉-3 小时前
用 Vue + DeepSeek 打造一个智能聊天网站(完整前后端项目开源)
前端·javascript·vue.js
zhangyao9403304 小时前
关于js导入Excel时,Excel的(年/月/日)日期是五位数字的问题。以及对Excel日期存在的错误的分析和处理。
开发语言·javascript·excel
骑驴看星星a4 小时前
【Three.js--manual script】4.光照
android·开发语言·javascript
潘小安8 小时前
🍎 Electron 桌面端应用合法性问题全流程解决指南(新手友好版)
electron·mac·自动化运维
devincob10 小时前
js原生、vue导出、react导出、axios ( post请求方式)跨平台导出下载四种方式的demo
javascript·vue.js·react.js