Da ich leider keine (einfache) Möglichkeit kenne die Maße des Pfades auszulesen, müssen diese bekannt sein und in das Script eingetragen werden (in Pixel). (Man könnte im Script eine neue Ebene erstellen, den Pfad füllen, das Dokument auf transparente Pixel zuschneiden, die Dokumentenmaße auslesen und anschliessend die letzten Schritte wieder rückgängig machen, aber das verlangsamt das Ganze doch extrem.)
Nächstes Problem: Mir ist kein Weg bekannt, einen Pfad direkt mit einem Befehl zu transformieren, aber dazu gibts ja den Scriptlistener
Dadurch sieht der Code zwar ziemlich konfus aus, aber egal.
Hier das VB-Script (in neue Textdatei kopieren und als "Skalieren.vbs" abspeichern):
Code:
Option Explicit
Dim appref, docref, strtRulerUnits, LBreite, LHoehe, SFaktor, multi
LBreite=175 'Breite des Pfades
LHoehe=220 'Höhe des Pfades
SFaktor=90 'Skalierfaktor in %
Set appref = CreateObject("Photoshop.Application")
strtRulerUnits = appRef.Preferences.RulerUnits
appref.Preferences.RulerUnits = 1
Set docref=appref.ActiveDocument
multi=SFaktor*docref.Height/LHoehe
skalieren
appref.Preferences.RulerUnits =strtRulerUnits
Sub skalieren()
DIM objApp
SET objApp = CreateObject("Photoshop.Application")
DIM dialogMode
dialogMode = 3
Dim id296
id296 = objApp.CharIDToTypeID( "Trnf" )
DIM desc55
SET desc55 = CreateObject( "Photoshop.ActionDescriptor" )
DIM id310
id310 = objApp.CharIDToTypeID( "Wdth" )
DIM id311
id311 = objApp.CharIDToTypeID( "#Prc" )
Call desc55.PutUnitDouble( id310, id311, multi )
DIM id312
id312 = objApp.CharIDToTypeID( "Hght" )
DIM id313
id313 = objApp.CharIDToTypeID( "#Prc" )
Call desc55.PutUnitDouble( id312, id313, multi )
Call objApp.ExecuteAction( id296, desc55, dialogMode )
End Sub
Zum ausführen/testen einfach per Doppelklick starten.
Nächstes Problem: VB-Scripte lasen sich (im Gegensatz zu Javascripts) nicht in eine Aktion einbinden.
Du musst also das VBS durch ein JS starten (oder jemand finden, der dir das Ganze direkt in JS schreibt, davon hab ich nämlich keine Ahnung).
Der Code für das Javascript sieht so aus:
Code:
var myvb = new File ('/D/Programme/Adobe/Photoshop CS/Vorgaben/Skripte/Transformieren.vbs');
myvb.execute();
Den Pfad musst du natürlich anpassen, die Datei als "irgendwas.js" in "..\Vorgaben\Scripte" abspeichern und dann vom Menü "Datei--> Scripten--> irgendwas" starten.
PS: Wenn jemand zu den angesprochenen Problemen einfachere Lösungen parat hat...bin sehr ineressiert.