Photoshop activeDocument.gradients 属性

Posted

技术标签:

【中文标题】Photoshop activeDocument.gradients 属性【英文标题】:Photoshop activeDocument.gradients property 【发布时间】:2011-11-08 13:04:40 【问题描述】:

我正在使用 Photoshop cs4,当我使用 adobe 脚本检查此属性时,我得到未定义。如何在 Photoshop 中访问已加载的文档渐变以通过脚本对其进行操作(例如修改渐变停止、删除渐变...)?

【问题讨论】:

【参考方案1】:

我知道这是一篇旧帖子,在 Photoshop 参考指南中似乎没有关于渐变属性的任何信息。但是...

使用scriptlistner 在空白的 640x640 图像上使用简单的前景到背景渐变,我们可以得到:

// =======================================================
var id148 = charIDToTypeID( "Grdn" );
var desc24 = new ActionDescriptor();
var id149 = charIDToTypeID( "From" );
var desc25 = new ActionDescriptor();
var id150 = charIDToTypeID( "Hrzn" );
var id151 = charIDToTypeID( "#Pxl" );
desc25.putUnitDouble( id150, id151, 639.000000 ); //x1
var id152 = charIDToTypeID( "Vrtc" );
var id153 = charIDToTypeID( "#Pxl" );
desc25.putUnitDouble( id152, id153, 0.000000 ); //y1
var id154 = charIDToTypeID( "Pnt " );
desc24.putObject( id149, id154, desc25 );
var id155 = charIDToTypeID( "T   " );
var desc26 = new ActionDescriptor();
var id156 = charIDToTypeID( "Hrzn" );
var id157 = charIDToTypeID( "#Pxl" );
desc26.putUnitDouble( id156, id157, 639.000000 ); //x2
var id158 = charIDToTypeID( "Vrtc" );
var id159 = charIDToTypeID( "#Pxl" );
desc26.putUnitDouble( id158, id159, 639.000000 ); //y2
var id160 = charIDToTypeID( "Pnt " );
desc24.putObject( id155, id160, desc26 );
var id161 = charIDToTypeID( "Type" );
var id162 = charIDToTypeID( "GrdT" );
var id163 = charIDToTypeID( "Lnr " );
desc24.putEnumerated( id161, id162, id163 );
var id164 = charIDToTypeID( "UsMs" );
desc24.putBoolean( id164, true );
var id165 = charIDToTypeID( "Grad" );
var desc27 = new ActionDescriptor();
var id166 = charIDToTypeID( "Nm  " );
desc27.putString( id166, "Foreground to Background" ); // name of the gradient
var id167 = charIDToTypeID( "GrdF" );
var id168 = charIDToTypeID( "GrdF" );
var id169 = charIDToTypeID( "CstS" );
desc27.putEnumerated( id167, id168, id169 );
var id170 = charIDToTypeID( "Intr" );
desc27.putDouble( id170, 4096.000000 );
var id171 = charIDToTypeID( "Clrs" );
var list5 = new ActionList();
var desc28 = new ActionDescriptor();
var id172 = charIDToTypeID( "Type" );
var id173 = charIDToTypeID( "Clry" );
var id174 = charIDToTypeID( "FrgC" );
desc28.putEnumerated( id172, id173, id174 );
var id175 = charIDToTypeID( "Lctn" );
desc28.putInteger( id175, 0 );
var id176 = charIDToTypeID( "Mdpn" );
desc28.putInteger( id176, 50 );
var id177 = charIDToTypeID( "Clrt" );
list5.putObject( id177, desc28 );
var desc29 = new ActionDescriptor();
var id178 = charIDToTypeID( "Type" );
var id179 = charIDToTypeID( "Clry" );
var id180 = charIDToTypeID( "BckC" );
desc29.putEnumerated( id178, id179, id180 );
var id181 = charIDToTypeID( "Lctn" );
desc29.putInteger( id181, 4096 );
var id182 = charIDToTypeID( "Mdpn" );
desc29.putInteger( id182, 50 );
var id183 = charIDToTypeID( "Clrt" );
list5.putObject( id183, desc29 );
desc27.putList( id171, list5 );
var id184 = charIDToTypeID( "Trns" );
var list6 = new ActionList();
var desc30 = new ActionDescriptor();
var id185 = charIDToTypeID( "Opct" );
var id186 = charIDToTypeID( "#Prc" );
desc30.putUnitDouble( id185, id186, 100.000000 );
var id187 = charIDToTypeID( "Lctn" );
desc30.putInteger( id187, 0 );
var id188 = charIDToTypeID( "Mdpn" );
desc30.putInteger( id188, 50 );
var id189 = charIDToTypeID( "TrnS" );
list6.putObject( id189, desc30 );
var desc31 = new ActionDescriptor();
var id190 = charIDToTypeID( "Opct" );
var id191 = charIDToTypeID( "#Prc" );
desc31.putUnitDouble( id190, id191, 100.000000 );
var id192 = charIDToTypeID( "Lctn" );
desc31.putInteger( id192, 4096 );
var id193 = charIDToTypeID( "Mdpn" );
desc31.putInteger( id193, 50 );
var id194 = charIDToTypeID( "TrnS" );
list6.putObject( id194, desc31 );
desc27.putList( id184, list6 );
var id195 = charIDToTypeID( "Grdn" );
desc24.putObject( id165, id195, desc27 );
executeAction( id148, desc24, DialogModes.NO );

不幸的是,这并不像只通过名称调用您需要的渐变那么简单,您最好使用 scriptlistner 使用所需的渐变进行录制。

这个post 也可能对你有用

【讨论】:

以上是关于Photoshop activeDocument.gradients 属性的主要内容,如果未能解决你的问题,请参考以下文章

Javascript Photoshop一一删除路径的bug?

Photoshop 脚本 - 获取文档位深度

Photoshop Javascript 的奇怪行为

Photoshop 脚本将一组移入另一组

使用 Photoshop 脚本保存 png 不起作用

确定是不是存在选择