photoshop插件开发入门(java,android,ios)

photoshop给我们提供了一个服务,让我们可以通过java或者c#等语言发送JavaScript等脚本给photoshop,让photoshop自动帮我们处理图片。这里的资料主要是如何连接photoshop,如果开发和调试JavaScript脚本。

photoshop 学习资料和sdk(java,android,ios)

下载地址https://developer.adobe.com/console/servicesandapis/ps

通过“编辑”–>远程连接打开如下对话框,开启“启用远程连接”,并设置密码,就可以通过photoshop提供的sdk来发送脚本给photoshop执行了。
在这里插入图片描述

脚本编程文档

官方文档: https://extendscript.docsforadobe.dev/
官方文档: https://helpx.adobe.com/hk_en/photoshop/using/scripting.html

open(new File(“/Users/weiwenzhang/Downloads/waifu.png”))

var docRef = app.open (new File("/Users/weiwenzhang/Downloads/person_dog.jpg"))

Photoshop ExtendScript开发和调试工具

客户端工具ExtendScript-Toolkit

https://github.com/Adobe-CEP/CEP-Resources/tree/master/ExtendScript-Toolkit

如果安装了photoshop, 运行环境就可以从 ExtendScript Toolkit CC 改为photoshop了!
image.png

切换运行环境

在这里插入图片描述

导出为jsxbin( File → Export as Binary)
@JSXBIN@ES@2.0@MyBbyBn0ABJAnAEjzFjBjMjFjSjUBfRBFeFjIjFjMjMjPff0DzACByB
导出的jsxbin可以直接在photoshop中运行
photoshop运行jsxbin执行结果
image.png

vs code 可以安装 插件 ExtendScript Debugger

BridgeTalk对文件操作
https://github.com/Adobe-CEP/CEP-Resources/blob/master/ExtendScript-Toolkit/Samples/javascript/SaveAsDifferentFileType.jsx

photoshop插件下载(如ScriptingListener)

监听photoshop动作
https://helpx.adobe.com/photoshop/kb/downloadable-plugins-and-content.html

Dollar($)对象

https://extendscript.docsforadobe.dev/extendscript-tools-features/dollar-object.html


其他参考文档
https://www.adobepress.com/articles/article.asp?p=433750&seqNum=2
https://theiviaxx.github.io/photoshop-docs/Photoshop/Application/open.html
其他文档https://github.com/Adobe-CEP/CEP-Resources/tree/master/Documentation/Product%20specific%20Documentation/Photoshop%20Scripting
可参考的文章https://blog.csdn.net/greless/category_10532767.html

选择区域,复制,粘贴

doc1 = app.open(File("C://Users/Administrator/Pictures/beauty2.png"))
var mergedDoc = app.documents.add(doc1.width*2, doc1.height, doc1.resolution, "doc1merge")
app.activeDocument = doc1
doc1.activeLayer.copy()
app.activeDocument = mergedDoc
var selRegion = Array(Array(0,0),
Array(mergedDoc.width.value/2, 0),
Array(mergedDoc.width.value/2, mergedDoc.height.value),
Array(0, mergedDoc.height.value),
Array(0,0))
mergedDoc.selection.select(selRegion)
mergedDoc.paste()
doc1.close(SaveOptions.DONOTSAVECHANGES)

mergedDoc.selection.select(selRegion)

mergedDoc.selection.invert()

内容识别填充

https://stackoverflow.com/questions/20719737/photoshop-cs5-script-fill-content-aware

function contentAwareFill() {
    //works only with selection
    try {var SB = activeDocument.selection.bounds} 
    catch (e) {alert('content aware fill needs a selection'); return};

    //100% opacity, normal blending content aware fill
    var desc = new ActionDescriptor();
    desc.putEnumerated( charIDToTypeID( "Usng" ), charIDToTypeID( "FlCn" ), stringIDToTypeID( "contentAware" ) );
    executeAction( charIDToTypeID( "Fl  " ), desc, DialogModes.NO ); 
}

Finally you can further manipulate the “cleaned” output with stringIDs, for instance this way:

function duplicateLayer(layerName, blendMode) { 
    function s2t(s) { return app.stringIDToTypeID(s) } 
    var d1 = new ActionDescriptor(); 
    var d2 = new ActionDescriptor(); 
    d2.putString(s2t("name"), layerName); 
    d2.putEnumerated(s2t("mode"), s2t("blendMode"), s2t(blendMode)); 
    d1.putObject(s2t("new"), s2t("layer"), d2); 
    d1.putEnumerated(s2t("using"), s2t("areaSelector"), s2t("selectionEnum")); 
    d1.putBoolean(s2t("copy"), true); 
    executeAction(s2t("make"), d1, DialogModes.NO); 
};

photoshop插件下载(如ScriptingListener)

https://helpx.adobe.com/photoshop/kb/downloadable-plugins-and-content.html

$.writeln(typeIDToStringID(charIDToTypeID('Nm  '))); // name 
$.writeln(typeIDToStringID(charIDToTypeID('Md  '))); // mode 
$.writeln(typeIDToStringID(charIDToTypeID('BlnM'))); // blendMode 
$.writeln(typeIDToStringID(charIDToTypeID('Drkn'))); // darken 
$.writeln(typeIDToStringID(charIDToTypeID('Nw  '))); // new 
$.writeln(typeIDToStringID(charIDToTypeID('Lyr '))); // layer 
$.writeln(typeIDToStringID(charIDToTypeID('Usng'))); // using 
$.writeln(typeIDToStringID(charIDToTypeID('ArSl'))); // areaSelector 
$.writeln(typeIDToStringID(charIDToTypeID('Slct'))); // selectionEnum 
$.writeln(typeIDToStringID(charIDToTypeID('Cpy '))); // copy 
$.writeln(typeIDToStringID(charIDToTypeID('Mk  '))); // make

$.writeln(typeIDToStringID(charIDToTypeID('Nm  ')));//name
$.writeln(typeIDToStringID(charIDToTypeID( "Usng" )));//using
$.writeln(typeIDToStringID(charIDToTypeID( "FlCn" )));//fillContents
$.writeln(typeIDToStringID(stringIDToTypeID( "contentAware" )));//contentAware
$.writeln(typeIDToStringID(charIDToTypeID( "Fl  " )));//fill
  • 2
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值