如何在 Photoshop 脚本中通过坐标 select 对象?并使用内容感知填充删除它?
how to select an object by coordinates in Photoshop script? and remove that using content aware fill?
我有多张带有文字的图片。我将每个单词的坐标设置为顶部、左侧、宽度和高度。我如何 select 每个单词(使用坐标)并使用内容感知填充将其删除。我应该从哪里开始?使用动作、脚本、插件或其他任何东西?
希望这会如你所愿:
// Switch off any dialog boxes
displayDialogs = DialogModes.NO; // OFF
var top = 10; // change these to your own coordinates
var left = 15;
var width = 75;
var height = 20;
// select a rectangle with the above coordinates
select_rectangle(top, left, top+height, left+width);
// content fill
content_fill();
// function SELECT RECTANGLE(top, left, bottom, right)
// --------------------------------------------------------
function select_rectangle(top, left, bottom, right)
{
// Note: co-ordinates are same as script listener
// and not so human-friendly as t,l,r,b.
// deselect EVERYTHING first
app.activeDocument.selection.deselect();
// =======================================================
var id1 = charIDToTypeID( "setd" );
var desc1 = new ActionDescriptor();
var id2 = charIDToTypeID( "null" );
var ref1 = new ActionReference();
var id3 = charIDToTypeID( "Chnl" );
var id4 = charIDToTypeID( "fsel" );
ref1.putProperty( id3, id4 );
desc1.putReference( id2, ref1 );
var id5 = charIDToTypeID( "T " );
var desc2 = new ActionDescriptor();
var id6 = charIDToTypeID( "Top " );
var id7 = charIDToTypeID( "#Pxl" );
desc2.putUnitDouble( id6, id7, top );
var id8 = charIDToTypeID( "Left" );
var id9 = charIDToTypeID( "#Pxl" );
desc2.putUnitDouble( id8, id9, left );
var id10 = charIDToTypeID( "Btom" );
var id11 = charIDToTypeID( "#Pxl" );
desc2.putUnitDouble( id10, id11, bottom );
var id12 = charIDToTypeID( "Rght" );
var id13 = charIDToTypeID( "#Pxl" );
desc2.putUnitDouble( id12, id13, right );
var id16 = charIDToTypeID( "Rctn" );
desc1.putObject( id5, id16, desc2 );
executeAction( id1, desc1, DialogModes.NO );
}
function content_fill()
{
// =======================================================
var idFl = charIDToTypeID( "Fl " );
var desc461 = new ActionDescriptor();
var idUsng = charIDToTypeID( "Usng" );
var idFlCn = charIDToTypeID( "FlCn" );
var idcontentAware = stringIDToTypeID( "contentAware" );
desc461.putEnumerated( idUsng, idFlCn, idcontentAware );
var idcontentAwareColorAdaptationFill = stringIDToTypeID( "contentAwareColorAdaptationFill" );
desc461.putBoolean( idcontentAwareColorAdaptationFill, true ); // Color Adaptation
var idOpct = charIDToTypeID( "Opct" );
var idPrc = charIDToTypeID( "#Prc" );
desc461.putUnitDouble( idOpct, idPrc, 100.000000 ); // Opacity
var idMd = charIDToTypeID( "Md " );
var idBlnM = charIDToTypeID( "BlnM" );
var idNrml = charIDToTypeID( "Nrml" ); // Normal
desc461.putEnumerated( idMd, idBlnM, idNrml );
executeAction( idFl, desc461, DialogModes.NO );
}
我有多张带有文字的图片。我将每个单词的坐标设置为顶部、左侧、宽度和高度。我如何 select 每个单词(使用坐标)并使用内容感知填充将其删除。我应该从哪里开始?使用动作、脚本、插件或其他任何东西?
希望这会如你所愿:
// Switch off any dialog boxes
displayDialogs = DialogModes.NO; // OFF
var top = 10; // change these to your own coordinates
var left = 15;
var width = 75;
var height = 20;
// select a rectangle with the above coordinates
select_rectangle(top, left, top+height, left+width);
// content fill
content_fill();
// function SELECT RECTANGLE(top, left, bottom, right)
// --------------------------------------------------------
function select_rectangle(top, left, bottom, right)
{
// Note: co-ordinates are same as script listener
// and not so human-friendly as t,l,r,b.
// deselect EVERYTHING first
app.activeDocument.selection.deselect();
// =======================================================
var id1 = charIDToTypeID( "setd" );
var desc1 = new ActionDescriptor();
var id2 = charIDToTypeID( "null" );
var ref1 = new ActionReference();
var id3 = charIDToTypeID( "Chnl" );
var id4 = charIDToTypeID( "fsel" );
ref1.putProperty( id3, id4 );
desc1.putReference( id2, ref1 );
var id5 = charIDToTypeID( "T " );
var desc2 = new ActionDescriptor();
var id6 = charIDToTypeID( "Top " );
var id7 = charIDToTypeID( "#Pxl" );
desc2.putUnitDouble( id6, id7, top );
var id8 = charIDToTypeID( "Left" );
var id9 = charIDToTypeID( "#Pxl" );
desc2.putUnitDouble( id8, id9, left );
var id10 = charIDToTypeID( "Btom" );
var id11 = charIDToTypeID( "#Pxl" );
desc2.putUnitDouble( id10, id11, bottom );
var id12 = charIDToTypeID( "Rght" );
var id13 = charIDToTypeID( "#Pxl" );
desc2.putUnitDouble( id12, id13, right );
var id16 = charIDToTypeID( "Rctn" );
desc1.putObject( id5, id16, desc2 );
executeAction( id1, desc1, DialogModes.NO );
}
function content_fill()
{
// =======================================================
var idFl = charIDToTypeID( "Fl " );
var desc461 = new ActionDescriptor();
var idUsng = charIDToTypeID( "Usng" );
var idFlCn = charIDToTypeID( "FlCn" );
var idcontentAware = stringIDToTypeID( "contentAware" );
desc461.putEnumerated( idUsng, idFlCn, idcontentAware );
var idcontentAwareColorAdaptationFill = stringIDToTypeID( "contentAwareColorAdaptationFill" );
desc461.putBoolean( idcontentAwareColorAdaptationFill, true ); // Color Adaptation
var idOpct = charIDToTypeID( "Opct" );
var idPrc = charIDToTypeID( "#Prc" );
desc461.putUnitDouble( idOpct, idPrc, 100.000000 ); // Opacity
var idMd = charIDToTypeID( "Md " );
var idBlnM = charIDToTypeID( "BlnM" );
var idNrml = charIDToTypeID( "Nrml" ); // Normal
desc461.putEnumerated( idMd, idBlnM, idNrml );
executeAction( idFl, desc461, DialogModes.NO );
}