【问题标题】:Photoshop: How to handle numbering a large amount of disorganized items?Photoshop:如何处理大量杂乱无章的项目?
【发布时间】:2015-09-09 19:13:34
【问题描述】:

假设我有一个像“座位”图表这样的大型露营地,其中有数百个地段被分割并在 Photoshop 中勾勒出来。 (每个地段大致是一个正方形)每个地段都需要在 Photoshop 中编号,并且在将来发生变化时也可以编辑。这些地块分散并在景观周围弯曲,因此在一层中输入文本似乎是因为例如地块 27 位于右侧并旋转 20 度以匹配地块,但地块 185 可能在左侧以完全不同的方式角度。

有没有一种优雅的方法来做到这一点,或者至少快速导入一个大数字序列,每层放置一个数字,这样我就可以抓住它们并将它们快速定位到相应的批次,而不是输入然后单独定位数字?我很难想出一种优雅/快速的方法来在 Photoshop 中处理这个问题......


编辑 1 - 图片:http://i.imgur.com/UT3DRBi.jpg

【问题讨论】:

  • 来张样片怎么样?
  • 没问题,现在在编辑中添加...

标签: text sequence photoshop layer


【解决方案1】:

您可以使用 Extendscript 做到这一点。我不是最优秀的 Extendscript 程序员,但下面的脚本会询问您想要的文本标签数量,并在单独的图层上添加那么多数字。当然,您可以随意使用字体、颜色、位置、大小等,但它应该可以帮助您入门。

这是一个示例 - 我关闭了第 4 层和第 5 层,这样您就可以看到每个数字都在一个新层上。

这里询问你想要多少个数字:

// Setchell - AddNumbers - Adobe Photoshop Script
// Description: Asks user for number of numbers to add, each in own layer   
// Version: 0.1
// Author: Mark Setchell (mark@thesetchells.com)
// Web: http://www.thesetchells.com
// ============================================================================
// Installation:
// 1. Place script in 'C:\Program Files\Adobe\Adobe Photoshop CS#\Presets\Scripts\'
// 2. Restart Photoshop
// 3. Choose File > Scripts > AddNumbers
// ============================================================================

// enable double-clicking from Mac Finder or Windows Explorer
// this command only works in Photoshop CS2 and higher
#target photoshop

// bring application forward for double-click events
app.bringToFront();


///////////////////////////////////////////////////////////////////////////////
// AddNumbers
///////////////////////////////////////////////////////////////////////////////
function AddNumbers() {

    // Change Debug=1 for extra debugging messages
    var Debug=1;

    // Get user to enter common stem for JPEG names
    var dialog = new Window('dialog', 'Setchell - AddNumbers');
    dialog.size = {width:500, height:100};
    dialog.stem = dialog.add('edittext',undefined, '<Enter ending number>');
    dialog.stem.size = {width:400,height:25};
    dialog.stem.value = true;
    dialog.stem.buildBtn = dialog.add('button', undefined,'OK', {name:'ok'});
    dialog.show();

    // Pick up what user entered - just digits
    var limit=dialog.stem.text.match(/\d+/);

    // Debug
    if(Debug)alert(limit);
    var cnt;


    var n=0;
    var nPer=10;
    var deltaX=app.activeDocument.width/nPer;
    var deltaY=app.activeDocument.height/nPer;
    var tX=0;
    var tY=deltaY;

    app.preferences.typeUnits = TypeUnits.POINTS;
    for(cnt=1;cnt<=limit;cnt++){

       // Adds a new layer to the active document and stores it in a variable named “myTextLayer”.
       var myTextLayer = app.activeDocument.artLayers.add();

       // Changes myTextLayer from normal to a text layer.
       myTextLayer.kind = LayerKind.TEXT;

       // Gets a reference to the textItem property of myTextLayer.
       var myText = myTextLayer.textItem;

       // sets the font size of the text to 16.
       myText.size = 16;

       // Sets the contents of the textItem.
       myText.contents = cnt;

       // Position the label - could be improved :-)
       tX=n*deltaX;
       myText.position = new Array(tX, tY);
       n++;
       if(n==nPer){
           tY+=deltaY;
           n=0;
       }
    }

return;

}

///////////////////////////////////////////////////////////////////////////////
// isCorrectVersion - check for Adobe Photoshop CS2 (v9) or higher
///////////////////////////////////////////////////////////////////////////////
function isCorrectVersion() {
    if (parseInt(version, 10) >= 9) {
        return true;
    }
    else {
        alert('This script requires Adobe Photoshop CS2 or higher.', 'Wrong Version', false);
        return false;
    }
}



///////////////////////////////////////////////////////////////////////////////
// showError - display error message if something goes wrong
///////////////////////////////////////////////////////////////////////////////
function showError(err) {
    if (confirm('An unknown error has occurred.\n' +
        'Would you like to see more information?', true, 'Unknown Error')) {
            alert(err + ': on line ' + err.line, 'Script Error', true);
    }
}


// test initial conditions prior to running main function
if (isCorrectVersion()) {

    // Save current RulerUnits to restore when we have finished
    var savedRulerUnits = app.preferences.rulerUnits;

    // Set RulerUnits to PIXELS
    app.preferences.rulerUnits = Units.PIXELS;

    try {
        AddNumbers();
    }
    catch(e) {
        // don't report error on user cancel
        if (e.number != 8007) {
            showError(e);
        }
    }

    // Restore RulerUnits to whatever they were when we started
    app.preferences.rulerUnits = savedRulerUnits;
}

【讨论】:

  • 在使用这个之后也不需要对字体和大小进行额外的编码。您只需单击文本工具,突出显示所有文本层,您选择的任何字体/大小/颜色都将应用于所有!
  • 很高兴看起来没问题。您可以更改对话框并询问开始和结束编号,例如例如,1,10,第一次说 1-10,第二次说 11-20。如果您想自己设置字体,可以删除myText.size=16。我注意到它不适用于 palettised 图像,也称为 Indexed 图像 - 如果您的图像是这样的,我认为您需要先将模式更改为 RGB .
猜你喜欢
  • 2010-11-24
  • 1970-01-01
  • 2017-12-05
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-04-12
  • 1970-01-01
  • 2014-08-15
相关资源
最近更新 更多