当前位置: 首页 > news >正文

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已经打印成功,本次引入完成

http://www.lryc.cn/news/119916.html

相关文章:

  • Stable Diffuion webui Mac版本安装过程
  • ARM64 指令用法学习整理
  • stable-diffusion 模型效果+prompt
  • uniapp 小兔鲜儿 - 首页模块(1)
  • selenium.webdriver Python爬虫教程
  • USB-SC-09编程电缆驱动程序安装说明
  • ONVIF对讲功能漫谈
  • 计算文本相似度
  • oracle 增加控制文件
  • OpenFeign超时时间设置不生效问题排查
  • Go和Java实现原型模式
  • linux I/O性能优化
  • PHP最简单自定义自己的框架model使用(七)
  • 程序猿成长之路之密码学篇-分组密码加密模式及IV(偏移量)的详解
  • Windows下批处理删除文件
  • html中文件上传储存到本地路径
  • 第九章 SpringBoot 自动配置原理 入门
  • String str=new String(“tango“) 创建了几个对象?
  • 引入三阶失真的非线性放大器的模拟输出及使用中值滤波器去除峰值研究(Matlab代码实现)
  • 【观察者设计模式详解】C/Java/JS/Go/Python/TS不同语言实现
  • 精细解析中文公司名称:智能分词工具助力地名、品牌名、行业词和后缀提取
  • 网络编程(JavaEE初阶系列10)
  • Git常用的指令
  • LoadRunner(2)
  • CTF之逆向之阿里巴巴
  • Labview控制APx(Audio Precision)进行测试测量(五)
  • 在单元测试中使用Jest模拟VS Code extension API
  • django boostrap html实现可拖拽的左右布局,鼠标拖动调整左右布局的大小或占比
  • 谈谈闭包和闭包使用场景
  • MATLAB算法实战应用案例精讲-【图像处理】边界框锚框