在巨大的位图上对图层内容的画板视图进行居中

时间:2018-04-07 19:28:05

标签: interface navigation photoshop

我在photoshop CS 2018中处理了一个非常大的(35,000 x 35,000像素)图像。我有1000个图层,其中许多图像内容很小(~200 x 200像素,例如位图文字20-50字)。

因为在这个画布上有这么多,我很难在图像上找到图层!我可以在图层调色板中轻松找到图层 - 那里有层次组织 - 但是我无法找到PS自动将我的视图置于图像中图层部分的内容

如果我缩小,我无法看到该图层,因为它太小了。

如何更轻松地在如此巨大的图像的不同部分之间跳转?或者如何快速定位图层?

1 个答案:

答案 0 :(得分:2)

也许这会有所帮助?第一个函数将在活动图层边界框的中心绘制向导,以便您可以轻松地在画布中找到它,第二个将删除所有向导。将它们保存为Photoshop / Presets / Scripts文件夹中的.jsx文件,PS重启后,它们将在文件>中可用。脚本菜单(您可以将它们分配给热键)。

第一个:

function main() {

    try {
        var l = activeDocument.activeLayer
    } catch (e) {
        return false //no active layer
    }

    var b = l.bounds


    if (b[0] === b[1] === b[2] === b[3]) {
        alert('Looks like the layer "' + l.name + '" is empty');
        return false //layer is empty
    }

    // set to pixels;
    var originalRulerUnits = app.preferences.rulerUnits;
    app.preferences.rulerUnits = Units.PIXELS;

    var ref = new ActionReference();
    ref.putEnumerated(charIDToTypeID("Dcmn"), charIDToTypeID("Ordn"), charIDToTypeID("Trgt"));
    var applicationDesc = executeActionGet(ref);
    var theH = applicationDesc.getInteger(stringIDToTypeID("rulerOriginH")) / 65536;
    var theV = applicationDesc.getInteger(stringIDToTypeID("rulerOriginV")) / 65536;
    // reset;

    var halfV = b[1] + (b[3] - b[1]) / 2 - theV;
    var halfH = b[0] + (b[2] - b[0]) / 2 - theH;

    activeDocument.guides.add(Direction.HORIZONTAL, new UnitValue(halfV, app.activeDocument.width.unit));
    activeDocument.guides.add(Direction.VERTICAL, new UnitValue(halfH, app.activeDocument.width.unit));

    app.preferences.rulerUnits = originalRulerUnits;

}
main()

和第二个:

function main() {
    var idDlt = charIDToTypeID("Dlt ");
    var desc276 = new ActionDescriptor();
    var idnull = charIDToTypeID("null");
    var ref184 = new ActionReference();
    var idGd = charIDToTypeID("Gd  ");
    var idOrdn = charIDToTypeID("Ordn");
    var idAl = charIDToTypeID("Al  ");
    ref184.putEnumerated(idGd, idOrdn, idAl);
    desc276.putReference(idnull, ref184);
    executeAction(idDlt, desc276, DialogModes.NO);
}
main()