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
原来真的只有提取码,哪提取的链接呢?楼主
编辑的时候有链接,不知道为什么发出来没有了,已经加上。 不错,,期待楼主的后续分享 dimvb的代码啊。 感谢楼主,涨知识了,PS还可以这么玩 楼主可以收费开发一款插件吗 谢谢分享,保存了 感谢楼主分享。
页:
[1]