Photoshop插件-保存-转换sRGB-脚本开发-PS插件

发布一下 0 0

PS是一款栅格图像编辑软件,具有许多强大的功能,本文演示如何通过脚本实现转换sRGB相关功能,展示从互联网收集而来的一个小插件,供大家学习交流,请勿用于商业用途。

1.插件界面

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

Photoshop插件-保存-转换sRGB-脚本开发-PS插件

2.关键代码

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

if (app) {    try {        Select();    } catch (e) {    }}function Select() {    if (ScriptUI.environment.keyboardState.shiftKey) {        function Convert2() {            function 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.Document, PSType.Ordinal, PSEnum.Target);                desc1.putReference(PSString.Null, ref1);                desc1.putString(PSKey.To, "sRGB IEC61966-2.1");                desc1.putEnumerated(PSKey.Intent, PSKey.Intent, PSEnum.Image);                desc1.putBoolean(PSKey.MapBlack, true);                desc1.putBoolean(PSString.rasterizePlaced, false);                desc1.putInteger(PSKey.ShadowMode, 2);                executeAction(sTID("convertToProfile"), desc1, dialogMode);            }            step1(true, true);        }        cTID = function(s) {            return app.charIDToTypeID(s);        };        sTID = function(s) {            return app.stringIDToTypeID(s);        };        Convert2.loadSymbols = function() {            var dbgLevel = $.level;            $.level = 0;            try {                PSConstants;                return;            } 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() {                };            }            PSClass.Document = cTID("Dcmn");            PSEnum.Image = cTID("Img ");            PSEnum.Target = cTID("Trgt");            PSKey.Intent = cTID("Inte");            PSKey.MapBlack = cTID("MpBl");            PSKey.ShadowMode = cTID("sdwM");            PSKey.To = cTID("T   ");            PSString.Null = sTID("null");            PSString.rasterizePlaced = sTID("rasterizePlaced");            PSType.Ordinal = cTID("Ordn");        };        Convert2.loadSymbols();        Convert2.main = function() {            Convert2();        };        Convert2.main();    } else {        function Convert1() {            function 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.Document, PSType.Ordinal, PSEnum.Target);                desc1.putReference(PSString.Null, ref1);                desc1.putString(PSKey.To, "sRGB IEC61966-2.1");                desc1.putEnumerated(PSKey.Intent, PSKey.Intent, PSEnum.Image);                desc1.putBoolean(PSKey.MapBlack, true);                desc1.putBoolean(PSString.rasterizePlaced, false);                desc1.putInteger(PSKey.ShadowMode, 2);                executeAction(sTID("convertToProfile"), desc1, dialogMode);            }            step1();        }        cTID = function(s) {            return app.charIDToTypeID(s);        };        sTID = function(s) {            return app.stringIDToTypeID(s);        };        Convert1.loadSymbols = function() {            var dbgLevel = $.level;            $.level = 0;            try {                PSConstants;                return;            } 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() {                };            }            PSClass.Document = cTID("Dcmn");            PSEnum.Image = cTID("Img ");            PSEnum.Target = cTID("Trgt");            PSKey.Intent = cTID("Inte");            PSKey.MapBlack = cTID("MpBl");            PSKey.ShadowMode = cTID("sdwM");            PSKey.To = cTID("T   ");            PSString.Null = sTID("null");            PSString.rasterizePlaced = sTID("rasterizePlaced");            PSType.Ordinal = cTID("Ordn");        };        Convert1.loadSymbols();        Convert1.main = function() {            Convert1();        };        Convert1.main();    }}

3.代码转执行

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

Photoshop插件-保存-转换sRGB-脚本开发-PS插件

PS脚本执行.png

4.作者答疑


  合理的脚本代码可以有效地提高工作效率,减少重复劳动。

文章引用至 作者联系方式

文章引用至 插件开发流程 - 知乎

版权声明:内容来源于互联网和用户投稿 如有侵权请联系删除

本文地址:http://0561fc.cn/78217.html