Ausgabe
Ich möchte ein Photoshop Smart Object mit Python erneut mit einer neuen Datei verknüpfen. Hier ist ein Screenshot der Schaltfläche, die in Photoshop verwendet wird, um diese Aktion auszuführen – „Relink to File“:
Ich habe einige Lösungen in anderen Programmiersprachen gefunden, konnte sie aber nicht in Python zum Laufen bringen, hier ist zum Beispiel eine: Photoshop Scripting: Relink Smart Object
Das Bearbeiten des Inhalts eines Smart-Objekts wäre auch eine gute Option, aber ich kann das auch nicht herausfinden. Hier ist ein Screenshot der Schaltfläche zu Edit Contents
einem Smart-Objekt:
Bisher habe ich das:
import win32com.client
psApp = win32com.client.Dispatch('Photoshop.Application')
psDoc = psApp.Application.ActiveDocument
for layer in psDoc.layers:
if layer.kind == 17: # layer kind 17 is Smart Object
print(layer.name)
# here it should either "Relink to File" or "Edit Contents" of a Smart Object
Lösung
Ich habe eine Problemumgehung gefunden! Ich habe einfach JavaScript in Python ausgeführt.
Dies ist der Code für Relink to File...
. Sie könnten etwas Ähnliches für tun, Edit Contents
aber ich habe es noch nicht ausprobiert, da das erneute Verknüpfen für mich besser funktioniert.
Denken Sie daran new_img_path
, dass dies meines Wissens eine rohe Zeichenfolge sein muss, zum Beispiel:
new_img_path = r”C:\\Users\\miha\\someEpicPic.jpg”
import photoshop.api as ps
def js_relink(new_img_path):
jscode = r"""
var desc = new ActionDescriptor();
desc.putPath(stringIDToTypeID('null'), new File("{}"));
executeAction(stringIDToTypeID('placedLayerRelinkToFile'), desc, DialogModes.NO);
""".format(new_img_path)
JavaScript(jscode)
def JavaScript(js_code):
app = ps.Application()
app.doJavaScript(js_code)
Beantwortet von – Miha
Antwort geprüft von – Mildred Charles (FixError Admin)