Gibt es eine Möglichkeit, ein verknüpftes Smart-Objekt in Photoshop CC 2014 auszutauschen

Ich habe mehrere Bilder, die dasselbe verknüpfte Smart-Objekt verwenden, aber ich muss Änderungen an einigen einzelnen Bildern vornehmen und möchte sie mit einem neuen verknüpften Smart-Objekt verknüpfen. Wenn ich im Moment eines auswechsele, werden alle verknüpften Smart-Objekte mit demselben Namen ausgetauscht. Gibt es eine Möglichkeit, ein verknüpftes Smart-Objekt als neues Smart-Objekt zu duplizieren, damit ich es ohne Auswirkungen auf andere verknüpfte Smart-Objekte mit demselben Namen austauschen kann?

Vielen Dank im Voraus!

Es muss gescriptet werden
Ich kann mich nicht einmal daran erinnern, diesen Kommentar geschrieben zu haben, aber Joonas aus der Vergangenheit hat teilweise Recht. Sie können dies ohne Skripting tun, aber mit Skripting könnte eine "Ein-Klick-Lösung" erreicht werden. Das Skript in dieser Antwort ist ziemlich nah und würde nicht zu viel Aufwand zum Ändern erfordern. --- Manuell können Sie dies tun: 1. Wählen Sie das verknüpfte SO aus und duplizieren Sie es in ein neues Dokument. 2. Ersetzen Sie den Inhalt wie gewohnt. 3. Duplizieren Sie es zurück in das Originaldokument. 4. Löschen Sie die ursprüngliche Ebene, wenn Sie das möchten.

Antworten (5)

Klicken Sie in der Ebenen-Palette mit der rechten Maustaste auf das Smart-Objekt und wählen Sie im Kontextmenü „ Neues Smart-Objekt durch Kopieren “.

Neues Smart-Objekt über Kopieren

Entschuldigung, vielleicht war ich nicht klar genug. Ich verwende keine Smart Objects. Ich verwende verknüpfte Smart-Objekte, die diese Option nicht haben.

Beschlossen, meinen Kommentar zu einer Antwort zu erweitern.


Sie können das manuell tun:

  1. Wählen Sie das verknüpfte SO aus und duplizieren Sie es in ein neues Dokument.
  2. Ersetzen Sie den Inhalt wie gewohnt.
  3. Duplizieren Sie es zurück in das Originaldokument.
  4. Löschen Sie die ursprüngliche Ebene, wenn Sie das möchten

Sie können dies fast wie machen Action, aber aus dem Kopf heraus konnte ich nicht herausfinden, wie man Aktionen aufzeichnet, wenn Sie auswählen first layer. Weil Sie Inhalte nicht ersetzen können, wenn Sie mehrere Ebenen ausgewählt haben.

ODER Sie können es mit Skripten tun / dieses Skript verwenden

Es war eine ziemlich einfache Änderung, die am Code in der Antwort vorgenommen werden musste, die ich in meinem Kommentar erwähnt habe , also dachte ich mir, warum nicht.

Sie finden das Skript hier oder am Ende der Antwort.

Wenn Sie den Code ausführen, wird ein Dialogfeld angezeigt, in dem Sie aufgefordert werden, den ersetzenden Inhalt auszuwählen. Anschließend werden die duplizierten Smart-Objekte wieder in Ihr Originaldokument verschoben.

// https://gist.github.com/joonaspaakko/ace1ec3455b6959dc611

#target photoshop

// If there are any documents open, run the code...
// =================================================
if ( app.documents.length > 0 ) {

    // Used later on when the layers are duplicated back to the original document.
    // ===========================================================================
    var docName = app.activeDocument.name;

    // Script listener code - Duplicate active group to a new document.
    // =================================================================
    var idMk = charIDToTypeID( "Mk  " );
        var desc14 = new ActionDescriptor();
        var idnull = charIDToTypeID( "null" );
            var ref10 = new ActionReference();
            var idDcmn = charIDToTypeID( "Dcmn" );
            ref10.putClass( idDcmn );
        desc14.putReference( idnull, ref10 );
        var idUsng = charIDToTypeID( "Usng" );
            var ref11 = new ActionReference();
            var idLyr = charIDToTypeID( "Lyr " );
            var idOrdn = charIDToTypeID( "Ordn" );
            var idTrgt = charIDToTypeID( "Trgt" );
            ref11.putEnumerated( idLyr, idOrdn, idTrgt );
        desc14.putReference( idUsng, ref11 );
        var idVrsn = charIDToTypeID( "Vrsn" );
        desc14.putInteger( idVrsn, 5 );
    executeAction( idMk, desc14, DialogModes.NO );     

    // Script listener code - Select first layer ( not counting Background layer).
    // Just in case more than one layer was selected.
    // ===========================================================================
    var idslct = charIDToTypeID( "slct" );
        var desc76 = new ActionDescriptor();
        var idnull = charIDToTypeID( "null" );
            var ref33 = new ActionReference();
            var idLyr = charIDToTypeID( "Lyr " );
            ref33.putName( idLyr, app.activeDocument.layers[0].name );
        desc76.putReference( idnull, ref33 );
        var idMkVs = charIDToTypeID( "MkVs" );
        desc76.putBoolean( idMkVs, false );
    executeAction( idslct, desc76, DialogModes.NO );

    // Script listener code - Replace contents.
    // =====================================================================
    var idplacedLayerReplaceContents = stringIDToTypeID( "placedLayerReplaceContents" );
        var desc8 = new ActionDescriptor();
        var idnull = charIDToTypeID( "null" );
        desc8.putPath( idnull, new File( "~" ) );
    executeAction( idplacedLayerReplaceContents, desc8, DialogModes.ALL );

    // Script listener code - Select all layers again
    // =======================================================
    var idselectAllLayers = stringIDToTypeID( "selectAllLayers" );
        var desc125 = new ActionDescriptor();
        var idnull = charIDToTypeID( "null" );
            var ref59 = new ActionReference();
            var idLyr = charIDToTypeID( "Lyr " );
            var idOrdn = charIDToTypeID( "Ordn" );
            var idTrgt = charIDToTypeID( "Trgt" );
            ref59.putEnumerated( idLyr, idOrdn, idTrgt );
        desc125.putReference( idnull, ref59 );
    executeAction( idselectAllLayers, desc125, DialogModes.NO );

    // Script listener code - Duplicate active group to the prior document.
    // =====================================================================
    var idDplc = charIDToTypeID( "Dplc" );
        var desc16 = new ActionDescriptor();
        var idnull = charIDToTypeID( "null" );
            var ref13 = new ActionReference();
            var idLyr = charIDToTypeID( "Lyr " );
            var idOrdn = charIDToTypeID( "Ordn" );
            var idTrgt = charIDToTypeID( "Trgt" );
            ref13.putEnumerated( idLyr, idOrdn, idTrgt );
        desc16.putReference( idnull, ref13 );
        var idT = charIDToTypeID( "T   " );
            var ref14 = new ActionReference();
            var idDcmn = charIDToTypeID( "Dcmn" );
            ref14.putName( idDcmn, docName );
        desc16.putReference( idT, ref14 );
        var idVrsn = charIDToTypeID( "Vrsn" );
        desc16.putInteger( idVrsn, 5 );
    executeAction( idDplc, desc16, DialogModes.NO );

    // Closes the new document.
    // =======================================================
    app.activeDocument.close( SaveOptions.DONOTSAVECHANGES );

}
Vergaß zu erwähnen. Nur als Hinweis: Das Skript dupliziert die Smart-Objekte, aber nicht die eigentliche(n) Datei(en). Persönlich würde ich einfach die Datei im Dialog duplizieren, indem ich mit der rechten Maustaste klicke, wenn ich das möchte, was passieren soll. Außerdem navigiert das Skript nicht zum Pfad der Originaldatei.
  1. Doppelklicken Sie im Ebenenbedienfeld auf Ihr verknüpftes Smart-Objekt.
  2. Speichern unter, mit neuem Namen. Änderungen vornehmen, speichern & schließen.
  3. Klicken Sie mit der rechten Maustaste auf das verknüpfte Smart-Objekt im Ebenenbedienfeld> In Smart-Objekt konvertieren.
  4. Klicken Sie erneut mit der rechten Maustaste und verknüpfen Sie die Datei erneut. Wählen Sie die neue Datei aus, die Sie gerade gespeichert haben.
  1. Klicken Sie mit der rechten Maustaste auf die Ebene
  2. In Smart-Objekt konvertieren
  3. Mit Datei erneut verknüpfen...
  4. Wählen Sie neues Asset

Klicken Sie mit der rechten Maustaste auf die neue Ebene > In Smart-Objekt konvertieren. Klicken Sie in diese Ebene und ersetzen Sie das Objekt. Speichern Sie und Sie sollten diese Ebene konvertiert haben, ohne die ursprüngliche Ebene zu verändern.