only998 发表于 2019-6-15 20:17

com模式编写photoshop插件【1】——从Hello,Photoshop开始

本帖最后由 only998 于 2019-6-15 20:55 编辑

一、Photoshop版本选择
必须说明的是,尽管每个版本的api都几乎一致,但是具体到每个版本的photoshop上又有些许差异。我写这篇hello的时候就在Photoshop CC2014上遭遇了一个Bug,靠着百度爬了半天外网,仍然没有解决,最终怒换版本,摔-----。在版本选择上尽量选择官方完整版,绿色版因为精简的原因,可能会有一些bug。如果你不知道怎么选择的话,不妨使用我正在使用的版本(网络收集,绿色版,支持脚本,扩展面板,链接放在最后)

二、新建vb.net项目
打开vs,新建vb.net项目,我们选择windows窗体程序,使用.net4.0,如下图所示,设置好保存路径。

在界面上拖入一个按钮,双击进入事件编辑,粘贴如下代码(后面会解释):
      Dim app = CreateObject("Photoshop.Application")

      app.Preferences.RulerUnits = 1

      Dim doc = app.Documents.add(500, 500)

      Dim layer = doc.ArtLayers.add()

      layer.Kind = 2

      layer.TextItem.Contents = "Hello,Photoshop!"

      layer.TextItem.Size = 25
启动调试,单击按钮运行,运行结果如下:

当然,你也可能遭遇如下错误:

造成这个错误的原因是你使用了一个绿色版的photoshop,并且该软件的注册表缺失。
以管理员身份运行psRepair.exe(下载地址在com模式编写photoshop插件【0】),右键photoshop桌面图标,选择“打开文件所在位置”将打开的文件路径复制到psRepair.exe,单击“修复注册表”,如下图所示:


三、代码解释
      Dim app = CreateObject("Photoshop.Application")
      使用COM创建一个Photoshop的应用程序实例,Photoshop为单实例程序,无论你执行多少次都只会同时存在一个实例。
      COM依赖注册表,所以注册表不完整就会出错。
      
      app.Preferences.RulerUnits = 1
       设置了Application对象下的Preferences对象的RulerUnits属性,Preferences设置集合,相当于我们的软件设置,选项一类。RulerUnits运行单位,我们向photoshop传递了一个数,photoshop如何解读它?它是厘米,毫米,点,像素,还是其他,一般从精准运行的角度考虑会设置为像素(也就是1)。
      
      Dim doc = app.Documents.add(500, 500)
      新建了一个500X500个RulerUnits单位的文档,并赋值给doc
      
      Dim layer = doc.ArtLayers.add()
      新建了一个图层,并赋值给layer
      
      layer.Kind = 2
      设置图层为文本图层
      
      layer.TextItem.Contents = "Hello,Photoshop!"
      设置文本图层的文本对象的内容为Hello,Photoshop!
      
      layer.TextItem.Size = 25
      设置文本图层的文本对象的文字尺寸为25。注意在高版本的photoshop上,该单位不受RulerUnits设置影响,你的文字单位设置为点,就是点,设置为像素,就是像素。该功能在photoshop cc 2014上无效。


四、调试
      在vs中调试非常简单,在你需要的地方直接下断点就可以了:

      下一篇将主要介绍Photoshop的对象模型结构(DOM),以及一些官方API文档的介绍。
      我正在使用的Photoshop版本:Photoshop_CC_19.0.1_CHS_3D_201711_X64   
https://pan.baidu.com/s/11MRfOhBexbKdI7nYcCn9ew


yanglinman 发表于 2019-6-15 20:35

原来真的只有提取码,哪提取的链接呢?楼主

only998 发表于 2019-6-15 20:56

yanglinman 发表于 2019-6-15 20:35
原来真的只有提取码,哪提取的链接呢?楼主

编辑的时候有链接,不知道为什么发出来没有了,已经加上。

kuqideyanlei 发表于 2019-6-15 21:04

不错,,期待楼主的后续分享

冥界3大法王 发表于 2019-6-15 21:53

dimvb的代码啊。

笙若 发表于 2019-6-15 21:54

感谢楼主,涨知识了,PS还可以这么玩

老扎77 发表于 2020-8-21 23:02

楼主可以收费开发一款插件吗

平凡之家 发表于 2020-9-15 15:56

谢谢分享,保存了

wyzkingstone 发表于 2020-11-1 17:15

感谢楼主分享。
页: [1]
查看完整版本: com模式编写photoshop插件【1】——从Hello,Photoshop开始