文章目录

  • 1.插件界面
  • 2.关键代码
    • 2.1 色彩混合模式
    • 2.2 盖印
    • 2.3 删除
  • 3.代码转执行
  • 4.作者答疑

  PS是一款栅格图像编辑软件,模块众多。提供了脚本,动态连接库等多种扩展机制,本文演示如何通过脚本实现色彩混合模式、盖印和删除相关功能,展示从互联网收集而来的一个小插件,供大家学习交流,请勿用于商业用途。

1.插件界面

  本文界面是一系列功能的一部分,将逐步展示,但是功能界面是共同的,如下图所示:

2.关键代码

2.1 色彩混合模式

  大家可通过源代码阅读,来掌握相关技巧,源代码如下:

win = new Window("dialog", "色彩混合模式");
win.orientation = "column";
leftGr = win.add("group");
leftGr.orientation = "column";
baton22 = leftGr.add("group");
Generate1 = baton22.add("button", undefined, "正常");
Generate1.minimumSize.width = 100;
Generate2 = baton22.add("button", undefined, "颜色");
Generate2.minimumSize.width = 100;
Generate3 = baton22.add("button", undefined, "明度");
Generate3.minimumSize.width = 100;
baton222 = leftGr.add("group");
Generate4 = baton222.add("button", undefined, "柔光");
Generate4.minimumSize.width = 100;
Generate5 = baton222.add("button", undefined, "滤色");
Generate5.minimumSize.width = 100;
Generate6 = baton222.add("button", undefined, "删除");
Generate6.minimumSize.width = 100;
sliderGroup44 = leftGr.add("group");
sliderGroup44.alignment = "left";
slTxt2 = sliderGroup44.add("staticText", undefined, "不透明度:");
sliderGroup = leftGr.add("group");
sliderGroup.orientation = "row";
sliderGroup.alignChildren = ["fill", "fill"];
slTxt = sliderGroup.add("staticText", undefined, "0");
slider6 = sliderGroup.add("slider", undefined, 100, 0, 100);
slider6.preferredSize.width = 275;
sliderValue6 = sliderGroup.add("statictext", undefined, "100");
slider6.onChanging = function() {sliderValue6.text = Math.round(this.value);
};
slider6.onChange = function() {foo66 = Math.round(this.value);var idsetd = charIDToTypeID("setd");var desc18 = new ActionDescriptor();var idnull = charIDToTypeID("null");var ref10 = new ActionReference();var idLyr = charIDToTypeID("Lyr ");var idOrdn = charIDToTypeID("Ordn");var idTrgt = charIDToTypeID("Trgt");ref10.putEnumerated(idLyr, idOrdn, idTrgt);desc18.putReference(idnull, ref10);var idT = charIDToTypeID("T   ");var desc19 = new ActionDescriptor();var idOpct = charIDToTypeID("Opct");var idPrc = charIDToTypeID("#Prc");desc19.putUnitDouble(idOpct, idPrc, foo66);var idLyr = charIDToTypeID("Lyr ");desc18.putObject(idT, idLyr, desc19);executeAction(idsetd, desc18, DialogModes.NO);app.refresh();
};
Generate1.onClick = function() {var idsetd = charIDToTypeID("setd");var desc7 = new ActionDescriptor();var idnull = charIDToTypeID("null");var ref4 = new ActionReference();var idLyr = charIDToTypeID("Lyr ");var idOrdn = charIDToTypeID("Ordn");var idTrgt = charIDToTypeID("Trgt");ref4.putEnumerated(idLyr, idOrdn, idTrgt);desc7.putReference(idnull, ref4);var idT = charIDToTypeID("T   ");var desc8 = new ActionDescriptor();var idMd = charIDToTypeID("Md  ");var idBlnM = charIDToTypeID("BlnM");var idNrml = charIDToTypeID("Nrml");desc8.putEnumerated(idMd, idBlnM, idNrml);var idLyr = charIDToTypeID("Lyr ");desc7.putObject(idT, idLyr, desc8);executeAction(idsetd, desc7, DialogModes.NO);app.refresh();
};
Generate2.onClick = function() {var idsetd = charIDToTypeID("setd");var desc18 = new ActionDescriptor();var idnull = charIDToTypeID("null");var ref13 = new ActionReference();var idLyr = charIDToTypeID("Lyr ");var idOrdn = charIDToTypeID("Ordn");var idTrgt = charIDToTypeID("Trgt");ref13.putEnumerated(idLyr, idOrdn, idTrgt);desc18.putReference(idnull, ref13);var idT = charIDToTypeID("T   ");var desc19 = new ActionDescriptor();var idMd = charIDToTypeID("Md  ");var idBlnM = charIDToTypeID("BlnM");var idClr = charIDToTypeID("Clr ");desc19.putEnumerated(idMd, idBlnM, idClr);var idLyr = charIDToTypeID("Lyr ");desc18.putObject(idT, idLyr, desc19);executeAction(idsetd, desc18, DialogModes.NO);app.refresh();
};
Generate3.onClick = function() {var idsetd = charIDToTypeID("setd");var desc1 = new ActionDescriptor();var idnull = charIDToTypeID("null");var ref1 = new ActionReference();var idLyr = charIDToTypeID("Lyr ");var idOrdn = charIDToTypeID("Ordn");var idTrgt = charIDToTypeID("Trgt");ref1.putEnumerated(idLyr, idOrdn, idTrgt);desc1.putReference(idnull, ref1);var idT = charIDToTypeID("T   ");var desc2 = new ActionDescriptor();var idMd = charIDToTypeID("Md  ");var idBlnM = charIDToTypeID("BlnM");var idLmns = charIDToTypeID("Lmns");desc2.putEnumerated(idMd, idBlnM, idLmns);var idLyr = charIDToTypeID("Lyr ");desc1.putObject(idT, idLyr, desc2);executeAction(idsetd, desc1, DialogModes.NO);app.refresh();
};
Generate4.onClick = function() {var idsetd = charIDToTypeID("setd");var desc5 = new ActionDescriptor();var idnull = charIDToTypeID("null");var ref3 = new ActionReference();var idLyr = charIDToTypeID("Lyr ");var idOrdn = charIDToTypeID("Ordn");var idTrgt = charIDToTypeID("Trgt");ref3.putEnumerated(idLyr, idOrdn, idTrgt);desc5.putReference(idnull, ref3);var idT = charIDToTypeID("T   ");var desc6 = new ActionDescriptor();var idMd = charIDToTypeID("Md  ");var idBlnM = charIDToTypeID("BlnM");var idSftL = charIDToTypeID("SftL");desc6.putEnumerated(idMd, idBlnM, idSftL);var idLyr = charIDToTypeID("Lyr ");desc5.putObject(idT, idLyr, desc6);executeAction(idsetd, desc5, DialogModes.NO);app.refresh();
};
Generate5.onClick = function() {var idsetd = charIDToTypeID("setd");var desc13 = new ActionDescriptor();var idnull = charIDToTypeID("null");var ref9 = new ActionReference();var idLyr = charIDToTypeID("Lyr ");var idOrdn = charIDToTypeID("Ordn");var idTrgt = charIDToTypeID("Trgt");ref9.putEnumerated(idLyr, idOrdn, idTrgt);desc13.putReference(idnull, ref9);var idT = charIDToTypeID("T   ");var desc14 = new ActionDescriptor();var idMd = charIDToTypeID("Md  ");var idBlnM = charIDToTypeID("BlnM");var idScrn = charIDToTypeID("Scrn");desc14.putEnumerated(idMd, idBlnM, idScrn);var idLyr = charIDToTypeID("Lyr ");desc13.putObject(idT, idLyr, desc14);executeAction(idsetd, desc13, DialogModes.NO);app.refresh();
};
Generate6.onClick = function() {var idDlt = charIDToTypeID("Dlt ");var desc9 = new ActionDescriptor();var idnull = charIDToTypeID("null");var ref5 = new ActionReference();var idLyr = charIDToTypeID("Lyr ");var idOrdn = charIDToTypeID("Ordn");var idTrgt = charIDToTypeID("Trgt");ref5.putEnumerated(idLyr, idOrdn, idTrgt);desc9.putReference(idnull, ref5);executeAction(idDlt, desc9, DialogModes.NO);app.refresh();
};
closeBtn = leftGr.add("button", undefined, "关闭");
closeBtn.preferredSize.width = 320;
close = false;
closeBtn.onClick = function() {close = true;win.close();
};
win.onClose = function() {close = true;
};
win.show();
while (close === false) {app.refresh();
}

2.2 盖印

  大家可通过源代码阅读,来掌握相关技巧,源代码如下:

//
// Generated Tue Feb 17 2015 15:30:30 GMT+0600
////
//==================== Stamp Vis. ==============
//
function StampVis() {// Makefunction step1(enabled, withDialog) {if (enabled != undefined && !enabled)return;var dialogMode = (withDialog ? DialogModes.ALL : DialogModes.NO);var desc1 = new ActionDescriptor();var ref1 = new ActionReference();ref1.putClass(PSClass.Layer);desc1.putReference(PSString.Null, ref1);executeAction(PSEvent.Make, desc1, dialogMode);};// Merge Visiblefunction step2(enabled, withDialog) {if (enabled != undefined && !enabled)return;var dialogMode = (withDialog ? DialogModes.ALL : DialogModes.NO);var desc1 = new ActionDescriptor();desc1.putBoolean(PSEvent.Duplicate, true);executeAction(sTID('mergeVisible'), desc1, dialogMode);};step1();      // Makestep2();      // Merge Visible
};cTID = function (s) {return app.charIDToTypeID(s);
};
sTID = function (s) {return app.stringIDToTypeID(s);
};//
// StampVis.loadSymbols
//   Loading up the symbol definitions like this makes it possible
//   to include several of these generated files in one master file
//   provided a prefix is specified other than the default. It also
//   skips the definitions if PSConstants has already been loaded.
//
StampVis.loadSymbols = function () {var dbgLevel = $.level;$.level = 0;try {PSConstants;return; // only if PSConstants is defined} catch (e) {} finally {$.level = dbgLevel;}var needDefs = true;$.level = 0;try {PSClass;needDefs = false;} catch (e) {} finally {$.level = dbgLevel;}if (needDefs) {PSClass = function () {};PSEnum = function () {};PSEvent = function () {};PSForm = function () {};PSKey = function () {};PSType = function () {};PSUnit = function () {};PSString = function () {};}// We may still end up duplicating some of the following definitions// but at least we don't redefine PSClass, etc... and wipe out othersPSClass.AdjustmentLayer = cTID('AdjL');PSClass.Calculation = cTID('Clcl');PSClass.Channel = cTID('Chnl');PSClass.CloneStampTool = cTID('ClTl');PSClass.Curves = cTID('Crvs');PSClass.CurvesAdjustment = cTID('CrvA');PSClass.HueSatAdjustmentV2 = cTID('Hst2');PSClass.HueSaturation = cTID('HStr');PSClass.Layer = cTID('Lyr ');PSClass.Mask = cTID('Msk ');PSClass.PaintbrushTool = cTID('PbTl');PSClass.Point = cTID('Pnt ');PSClass.Version = cTID('Vrsn');PSEnum.All = cTID('Al  ');PSEnum.Bicubic = cTID('Bcbc');PSEnum.Blue = cTID('Bl  ');PSEnum.Composite = cTID('Cmps');PSEnum.ForegroundColor = cTID('FrgC');PSEnum.GaussianDistribution = cTID('Gsn ');PSEnum.HideAll = cTID('HdAl');PSEnum.Merged = cTID('Mrgd');PSEnum.Multiply = cTID('Mltp');PSEnum.None = cTID('None');PSEnum.Normal = cTID('Nrml');PSEnum.Overlay = cTID('Ovrl');PSEnum.QCSAverage = cTID('Qcsa');PSEnum.RGB = cTID('RGB ');PSEnum.Subtract = cTID('Sbtr');PSEnum.Target = cTID('Trgt');PSEvent.Delete = cTID('Dlt ');PSEvent.Desaturate = cTID('Dstt');PSEvent.Duplicate = cTID('Dplc');PSEvent.Exchange = cTID('Exch');PSEvent.Fill = cTID('Fl  ');PSEvent.Hide = cTID('Hd  ');PSEvent.Invert = cTID('Invr');PSEvent.Make = cTID('Mk  ');PSEvent.Move = cTID('move');PSEvent.Reset = cTID('Rset');PSEvent.Select = cTID('slct');PSEvent.Set = cTID('setd');PSEvent.Show = cTID('Shw ');PSEvent.Transform = cTID('Trnf');PSKey.Adjustment = cTID('Adjs');PSKey.At = cTID('At  ');PSKey.Brightness = cTID('Brgh');PSKey.Color = cTID('Clr ');PSKey.Colorize = cTID('Clrz');PSKey.Colors = cTID('Clrs');PSKey.Contrast = cTID('Cntr');PSKey.Curve = cTID('Crv ');PSKey.Distribution = cTID('Dstr');PSKey.FilterLayerRandomSeed = cTID('FlRs');PSKey.FreeTransformCenterState = cTID('FTcs');PSKey.From = cTID('From');PSKey.Height = cTID('Hght');PSKey.Horizontal = cTID('Hrzn');PSKey.Hue = cTID('H   ');PSKey.Interpolation = cTID('Intr');PSKey.Lightness = cTID('Lght');PSKey.MakeVisible = cTID('MkVs');PSKey.Mode = cTID('Md  ');PSKey.Monochromatic = cTID('Mnch');PSKey.Name = cTID('Nm  ');PSKey.New = cTID('Nw  ');PSKey.Noise = cTID('Nose');PSKey.Offset = cTID('Ofst');PSKey.Opacity = cTID('Opct');PSKey.Radius = cTID('Rds ');PSKey.Scale = cTID('Scl ');PSKey.Start = cTID('Strt');PSKey.Threshold = cTID('Thsh');PSKey.To = cTID('T   ');PSKey.ToggleOthers = cTID('TglO');PSKey.Type = cTID('Type');PSKey.Using = cTID('Usng');PSKey.Vertical = cTID('Vrtc');PSKey.Width = cTID('Wdth');PSKey.With = cTID('With');PSString.Null = sTID('null');PSString.addToSelectionContinuous = sTID('addToSelectionContinuous');PSString.layerGroup = sTID('layerSection');PSString.linearLight = sTID('linearLight');PSString.presetKind = sTID('presetKind');PSString.presetKindCustom = sTID('presetKindCustom');PSString.presetKindDefault = sTID('presetKindDefault');PSString.presetKindType = sTID('presetKindType');PSString.selection = sTID('selection');PSString.selectionModifier = sTID('selectionModifier');PSString.selectionModifierType = sTID('selectionModifierType');PSType.BlendMode = cTID('BlnM');PSType.Calculation = cTID('Clcn');PSType.FillContents = cTID('FlCn');PSType.Interpolation = cTID('Intp');PSType.Ordinal = cTID('Ordn');PSType.QuadCenterState = cTID('QCSt');PSType.UserMaskOptions = cTID('UsrM');PSUnit.Distance = cTID('#Rlt');PSUnit.Percent = cTID('#Prc');PSUnit.Pixels = cTID('#Pxl');
};StampVis.loadSymbols(); // load up our symbols//=========================================
//                    StampVis.main
//=========================================
//StampVis.main = function () {StampVis();
};StampVis.main();// EOF

2.3 删除

  大家可通过源代码阅读,来掌握相关技巧,源代码如下:

//
//==================== Delete ==============
//
function Delete() {// Deletefunction step1(enabled, withDialog) {if (enabled != undefined && !enabled)return;var dialogMode = (withDialog ? DialogModes.ALL : DialogModes.NO);var desc1 = new ActionDescriptor();var ref1 = new ActionReference();ref1.putEnumerated(PSClass.Layer, PSType.Ordinal, PSEnum.Target);desc1.putReference(PSString.Null, ref1);executeAction(PSEvent.Delete, desc1, dialogMode);};step1();      // Delete
};cTID = function (s) {return app.charIDToTypeID(s);
};
sTID = function (s) {return app.stringIDToTypeID(s);
};//
// Delete.loadSymbols
//   Loading up the symbol definitions like this makes it possible
//   to include several of these generated files in one master file
//   provided a prefix is specified other than the default. It also
//   skips the definitions if PSConstants has already been loaded.
//
Delete.loadSymbols = function () {var dbgLevel = $.level;$.level = 0;try {PSConstants;return; // only if PSConstants is defined} catch (e) {} finally {$.level = dbgLevel;}var needDefs = true;$.level = 0;try {PSClass;needDefs = false;} catch (e) {} finally {$.level = dbgLevel;}if (needDefs) {PSClass = function () {};PSEnum = function () {};PSEvent = function () {};PSForm = function () {};PSKey = function () {};PSType = function () {};PSUnit = function () {};PSString = function () {};}// We may still end up duplicating some of the following definitions// but at least we don't redefine PSClass, etc... and wipe out othersPSClass.Layer = cTID('Lyr ');PSEnum.Target = cTID('Trgt');PSEvent.Delete = cTID('Dlt ');PSEvent.Invert = cTID('Invr');PSEvent.Make = cTID('Mk  ');PSKey.Duplicate = cTID('Dplc');PSString.Null = sTID('null');PSType.Ordinal = cTID('Ordn');
};Delete.loadSymbols(); // load up our symbols//=========================================
//                    Delete.main
//=========================================
//Delete.main = function () {Delete();
};Delete.main();// EOF

3.代码转执行

  使用记事本或者notepad++等文本编辑器,将代码拷贝至文本文件,然后修改后缀名为js或者jsx,最后再PS软件菜单文件》脚本》浏览,点执行即可,也可以将脚本放在预设文件夹内,会显示再脚本下的二级子菜单。如下图所示:

4.作者答疑


  如有疑问,请留言。

Photoshop插件-色彩混合模式-盖印-删除-脚本开发-PS插件相关推荐

  1. Photoshop插件-保存-8位通道-16位通道-脚本开发-PS插件

    文章目录 1.插件界面 2.关键代码 2.1.8位通道 2.2.16位通道 3.代码转执行 4.作者答疑   PS是一款栅格图像编辑软件,具有许多强大的功能,本文演示如何通过脚本实现8位通道和16位通 ...

  2. Photoshop插件-锐化-多重调整锐化 (Web)-脚本开发-PS插件

    文章目录 1.插件界面 2.关键代码 3.代码转执行 4.作者答疑   PS是一款栅格图像编辑软件,模块众多.提供了脚本,动态连接库等多种扩展机制,本文演示如何通过脚本实现多重调整锐化 (Web)相关 ...

  3. Photoshop插件--证件照--1寸裁剪--1寸排版--脚本开发--PS插件

    文章目录 1.插件界面 2.关键代码 2.1.1寸裁剪 2.2.1寸排版   PS是一款栅格图像编辑软件,具有许多强大的功能,可以制作证件照,本文演示如何通过脚本实现1寸裁剪和1寸排版功能相关功能,展 ...

  4. Photoshop插件-秋色效果-脚本开发-PS插件

    文章目录 1.插件界面 2.关键代码-秋色效果 3.作者答疑   PS是一款栅格图像编辑软件,具有许多强大的功能,本文演示如何通过脚本实现秋色效果相关功能,展示从互联网收集而来的一个小插件,供大家学习 ...

  5. Photoshop插件-锐化-高反差保留-脚本开发-PS插件

    文章目录 1.插件界面 2.关键代码 3.代码转执行 4.作者答疑   PS是一款栅格图像编辑软件,模块众多.提供了脚本,动态连接库等多种扩展机制,本文演示如何通过脚本实现高反差保留相关功能,展示从互 ...

  6. Photoshop插件-锐化-高反差保留仅边缘-脚本开发-PS插件

    文章目录 1.插件界面 2.关键代码 3.代码转执行 4.作者答疑   PS是一款栅格图像编辑软件,模块众多.提供了脚本,动态连接库等多种扩展机制,本文演示如何通过脚本实现高反差保留仅边缘相关功能,展 ...

  7. Photoshop插件-修复高光-脚本开发-PS插件

    文章目录 1.插件界面 2.关键代码-修复高光 3.代码转执行 4.作者答疑   PS是一款栅格图像编辑软件,模块众多.提供了脚本,动态连接库等多种扩展机制,本文演示如何通过脚本实现修复高光相关功能, ...

  8. Photoshop插件--新建文档--嵌入智能对象--复制图像--脚本开发--PS插件

    文章目录 1.插件界面 2.关键代码 2.1新建文档 2.2嵌入智能对象 2.3复制图像 3.作者寄语   PS是一款栅格图像编辑软件,具有许多强大的功能,本文演示如何通过脚本新建文档,嵌入智能对象和 ...

  9. Photoshop插件-晕影白色-脚本开发-PS插件

    文章目录 1.插件界面 2.关键代码 3.代码转执行 4.作者答疑   PS是一款栅格图像编辑软件,具有许多强大的功能,本文演示如何通过脚本实现晕影白色相关功能,展示从互联网收集而来的一个小插件,供大 ...

最新文章

  1. OpenCV+python:人脸检测
  2. 苏宁、国美-OPM战略
  3. 8月25号 工作计划与实行
  4. 【架构】技术-工具-平台-语言框架
  5. windows系统路径环境变量
  6. 遵循Java EE标准规范的开源GIS服务平台之三:数据发布与访问
  7. ansible笔记(4):常用模块之文件操作
  8. 自编自适应中值滤波器
  9. cryptojs php 互通_AES 加密解密 CryptoJS + php 方案
  10. python股市回测程序
  11. 信息学奥赛IO三大法宝
  12. Processing 入门教程(二十一) 利用数组产生雪花坠落效果
  13. 用python扑克随机发牌_python:扑克牌发牌程序
  14. panic: reflect: reflect.Value.SetInt using value obtained using unexported field 解决方法
  15. MMORPG游戏的文案设计
  16. DRF-视图类APIView与GenericAPIView
  17. 你的磁力链为什么下不动了?(干货)
  18. jdk1.8后在接口中新增的内容defau和static函数
  19. Java腾讯云支付对接
  20. 如何将低像素的图片无损放大?

热门文章

  1. 作业一(编译、汇编、翻译以及方舟编译器)
  2. 前端开发面试题—JavaScript冒泡排序
  3. auto.js使用vscode连接手机教程
  4. php事件的应用场景,php观察者模式应用场景实例详解
  5. 在Java中将AI转换为PSD,JPEG或PNG图像格式指南
  6. 测试 App 流畅度
  7. 技术分享 | 为什么学习rrt_exploration实现自主建图容易掉坑?
  8. mysql房源数据库_[宜配屋]听图阁
  9. 【ML】贝叶斯分类和朴素贝叶斯分类
  10. Python类中super()和__init__()的关系