gpt4 book ai didi

javascript - Photoshop - 根据当前位置的 RGB 信息为图像着色的脚本

转载 作者:行者123 更新时间:2023-11-28 05:38:27 25 4
gpt4 key购买 nike

看看这对于我们可以放在办公室的一些艺术品是否可行。我有一些基于我们一些非常旧的工程图纸的复杂线条图。它们基本上是 2 层文件,白线细节和黑色背景层。

我希望对图像进行随机着色,并想知道是否可以制作脚本而不是手动执行。我制作了一些 Photoshop 脚本,但这超出了我的编程技能。

我很好奇是否可以制作一个脚本来执行以下操作...

  1. 将鼠标移动到图像上的随机 X,Y % 位置
  2. 检查颜色是否为 0,0,0(黑色)
  3. 如果是,则用给定的颜色填充油漆桶并返回步骤 1
  4. 如果否,返回步骤 1

重复100次

因此,如果当前光标位置的颜色为黑色,则脚本会在图像周围移动,并且桶会填充颜色。希望这将随机填充这些图像上的所有工程细节,而不会意外填充白色/灰色而不是黑色的前景细节。

理论上可以做到吗?

谢谢

最佳答案

这些方法来 self 大约 10 年前制作的旧 Photoshop 脚本,但它们可能会有所帮助。有两个函数,一个是在 x,y 点上执行吸管单击以获取颜色,另一个是在 x,y 点上执行魔棒单击。对于您的示例,您可以对一个点进行滴眼,如果它返回黑色,您可以使用魔棒对同一点进行区域选择,然后对该选择执行填充。

function eyedropper(doc,x,y) {
// don't mess with spacing inside function, seesm to braek it
Stdlib = function() {};
Stdlib.selectBounds = function(doc, b, type, feather, antialias) {
doc.selection.select([[ b[0], b[1] ],
[ b[2], b[1] ],
[ b[2], b[3] ],
[ b[0], b[3] ]],
type, feather, antialias);
};

// getColorAt
// based on:
// fazstp@adobeforums.com wrote:
// news://adobeforums.com:119/3bb84060.0@webx.la2eafNXanI
//

// make new 1 pixel selection
x = Math.floor(x);
y = Math.floor(y);

Stdlib.selectBounds(doc, [x, y, x+1, y+1]);

try {
function findPV(h) {
for (var i = 0; i <= 255; i++ ) {
if (h[i]) { return i; }
}
return 0;
}

var pColour = new SolidColor();

pColour.rgb.red = findPV(doc.channels["Red"].histogram);
pColour.rgb.green = findPV(doc.channels["Green"].histogram);
pColour.rgb.blue = findPV(doc.channels["Blue"].histogram);

} finally {
doc.selection.deselect();
}
return pColour;
};

此外,这是我执行魔杖的函数:

function wand(x,y,tol,option)
{
// options:
// setd = initial selection
// AddT = add to selection

var id9466 = charIDToTypeID( option );
var desc1828 = new ActionDescriptor();
var id9467 = charIDToTypeID( "null" );
var ref1340 = new ActionReference();
var id9468 = charIDToTypeID( "Chnl" );
var id9469 = charIDToTypeID( "fsel" );
ref1340.putProperty( id9468, id9469 );
desc1828.putReference( id9467, ref1340 );
var id9470 = charIDToTypeID( "T " );
var desc1829 = new ActionDescriptor();
var id9471 = charIDToTypeID( "Hrzn" );
var id9472 = charIDToTypeID( "#Pxl" );
desc1829.putUnitDouble( id9471, id9472, x );
var id9473 = charIDToTypeID( "Vrtc" );
var id9474 = charIDToTypeID( "#Pxl" );
desc1829.putUnitDouble( id9473, id9474, y );
var id9475 = charIDToTypeID( "Pnt " );
desc1828.putObject( id9470, id9475, desc1829 );
var id9476 = charIDToTypeID( "Tlrn" );
desc1828.putInteger( id9476, tol );
var id9477 = charIDToTypeID( "AntA" );
desc1828.putBoolean( id9477, true );
executeAction( id9466, desc1828, DialogModes.NO );
};

关于javascript - Photoshop - 根据当前位置的 RGB 信息为图像着色的脚本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39154244/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com