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

内容识别填充

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/168410.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

网络工程师网络配置经典例题(一)附有详细注释

一、配置管理IP和Telnet 配置设备管理IP地址后&#xff0c;可以通过管理IP远程登录设备。 &#xff08;1&#xff09;配置管理IP地址 <HUAWEI> system-view [HUAWEI] vlan 5 //创建交换机管理VLAN 5 [HUAWEI-VLAN5] management-vlan [HUAWEI-VLAN5…

一篇博客读懂双向链表

目录 一、双向带头循环链表的格式 二、链表的初始化和销毁 2.1链表的初始化 2.2链表的销毁 三、链表的检查与准备 3.1链表的打印 3.2创建新结点 四、链表增删查改 4.1尾插 4.2尾删 4.3头插 4.4头删 4.5查找 4.6任意位置前插入 4.7删除任意位置 一、双向带…

emq Neuron工业协议采集使用

emq Neuron工业协议采集使用 Neuron 简介 EMQ X Neuron 是运行在各类物联网边缘网关硬件上的工业协议商业化网关软件&#xff0c;支持一站式接入和解析数十种工业协议&#xff0c;并转换成 MQTT 协议接入工业物联网平台。用户可以通过基于 Web 的管理控制台可以实现在线的网关…

leetcode刷题日记:202. Happy Number( 快乐数)和203. Remove Linked List Elements(移除链表元素)

202. Happy Number( 快乐数) 这一题的解决与之前的循环链表比较类似&#xff0c;因为如果不是快乐数的话&#xff0c;在数字变化的过程中必然遇到了数字变换的循环&#xff0c;所以我们需要在变换的过程中判断是否遇到了循环&#xff0c;判断是否在一个序列中存在循环&#xf…

[uni-app] uni.showToast 一闪而过问题/设定时间无效/1秒即逝

toast一闪就消失 1.猜测频繁点击导致 – 排除 2.猜测再定时器内导致-- 排除 3.和封装的接口调用一起导致 - 是改原因 深挖发现: axios封装中, 对loading/hindloading进行了配置, 看来是 showToast 与 loading等冲突导致的 wx.hideLoading(Object object) 解决办法 再封装的…

前端CSS实现响应式TimeLine效果(附源码)

文章目录 纯CSS搭建,先上效果图(附有源码)视图层 index.htmlindex.css 公用样式文件Main.css 主要的样式文件纯CSS搭建,先上效果图(附有源码) 本效果为纯CSS搭建,适配移动端和PC端! 视图层 index.html <body class="light"><header class="he…

Scrum敏捷开发培训团队和组织来说的重要性

Scrum敏捷开发培训对于团队和组织来说是至关重要的&#xff0c;有以下几点&#xff0c;大家可以参考下&#xff1a; 理解敏捷价值观和原则&#xff1a; 培训有助于团队理解敏捷方法背后的核心理念和价值观&#xff0c;包括个体和互动、工作软件、客户合作和响应变化。这有助于建…

智慧商场数字孪生三维可视化大屏管理系统提升品牌形象

聚焦国家战略需求和先进制造业发展方向&#xff0c;加快数字化发展战略部署&#xff0c;数字孪生、工业互联网、工业物联网已被广泛认为是工业革命的新引擎。数字孪生公司正在推动工业制造从制造转向智造。通过数字化建模和仿真的方式&#xff0c;优化设计、生产、质量管理、供…

《opencv实用探索·一》QT+opencv实现图片拼接和Mat转QImage

本文利用opencv实现了几个好用的功能&#xff0c;包含两个文件&#xff0c;如下&#xff1a; 源码放在文章末尾 imageProcessing类包含三个功能&#xff1a; 1、图像拼接 cv::Mat imageMosaic(cv::Mat mat1, cv::Mat mat2, MosaicMode mosaicMode);mat1和mat2为两个待拼接的…

美国DDoS服务器:如何保护你的网站免遭攻击?

​  在当今数字化时代&#xff0c;互联网已经成为人们生活中不可或缺的一部分。随着互联网的普及和发展&#xff0c;网络安全问题也日益严重。其中&#xff0c;DDoS攻击是目前最常见和具有破坏性的网络攻击之一。那么&#xff0c;如何保护你的网站免遭DDoS攻击呢?下面将介绍…

CMMI之项目管理类核心框架

项目管理类过程域涵盖了与项目的计划、监督和控制相关的项目管理活动。 CMMI-DEV 中的七个项目管理类过程域是&#xff1a; • 集成项目管理&#xff08;Integrated Project Management&#xff0c; IPM&#xff09; • 项目监督与控制&#xff08;Project Monitoring and Cont…

23.11.19日总结(vue2和vue3的区别,项目中期总结)

经过昨天的中期答辩&#xff0c;其实可以看出来项目进度太慢了&#xff0c;现在是第十周&#xff0c;预计第十四周是终级答辩&#xff0c;在这段时间要把项目写完。 前端要加上一个未登录的拦截器&#xff0c;后端加上全局的异常处理。对于饿了么项目的商品建表&#xff0c;之前…

亚马逊高级API申请

一、背景介绍 亚马逊公司提供了丰富的API接口&#xff0c;以便开发者能够轻松地与其服务进行集成。这些API接口包括各种功能&#xff0c;如商品信息查询、订单处理、客户关系管理等。本文旨在帮助您如何申请亚马逊的高级API&#xff0c;并确保您的应用符合亚马逊公司的要求和标…

一图多码如何分解?快速做二维码解码的方法

当遇到一张图片里面有多个二维码时&#xff0c;想要将图片中的二维码分解成链接或者文本&#xff0c;该如何来操作呢&#xff1f;一般解决这个问题的方法多会通过使用二维码解码器来完成操作&#xff0c;那么对于还不知道的怎么操作的小伙伴&#xff0c;下面的方法可以来学习一…

【linux】 mpstat 使用

​mpstat mpstat 可以查看所有cpu的平均负载&#xff0c;也可以查看指定cpu的负载。所以mpstat其实就是主要查看CPU负载的一个工具。是一款常用的多核CPU性能分析工具&#xff0c;用来实时查询每个CPU的性能指标&#xff0c;以及所有CPU的平均指标。 mpstat 是sysstat中的一个工…

数据结构:lambda表达式

基本概念 语法 // 1. 不需要参数,返回值为 2 () -> 2 // 2. 接收一个参数(数字类型),返回其2倍的值 x -> 2 * x // 3. 接受2个参数(数字),并返回他们的和 (x, y) -> x y // 4. 接收2个int型整数,返回他们的乘积 (int x, int y) -> x * y // 5. 接受一个 string 对…

支持导入ics文件的提醒待办类工具

上个月腾讯待办突然发布因业务发展方向调整&#xff0c;腾讯待办将于2023年12月20日停运并下架&#xff0c;如需保存数据请在停运日期前导出数据&#xff0c;打开腾讯待办后会弹出保存数据的操作提示。 官方发布消息后&#xff0c;很多人不禁疑问&#xff1a;腾讯待办停运后还…

系列十、ReentrantReadWriteLock

一、概述 ReentrantReadWriteLock是ReadWriteLock的一个子类&#xff0c;具有读锁和写锁的双重功能&#xff0c;通常用于做缓存。 二、案例代码 2.1、ReentrantReadWriteLockCache /*** Author : 一叶浮萍归大海* Date: 2023/11/20 17:57* Description: 使用ReentrantReadWri…

淘宝商品详情数据接口(Taobao.item_get)

淘宝商品详情接口是一种程序化的接口&#xff0c;允许开发者根据商品ID或商品链接&#xff0c;获取淘宝平台上的商品详细信息。通过这个接口&#xff0c;开发者可以方便地获取商品的标题、价格、销量、描述等数据&#xff0c;进而提供给用户进行展示和购买。 使用淘宝商品详情…

【微信公众号开发】1.3 编辑模式之自动回复

一、内容 二、回复分类 首先开启自动回复 1. 关键词回复 2. 收到消息回复 3. 被关注回复 三、实战 1. 微信扫码关注 2. 回复1,2 一、内容 关注订阅号自动回复功能 二、回复分类 说明关键词回复可以根据设置关键字回复收到消息回复开发能力&#xff0c;灵活回复&…