Objektgröße an Bildgröße anpassen

hotschen hat gesagt.:

Ich weiß. :rolleyes:
Du meintest nur, dass dir keine direkte Lösung bekannt ist, also dachte ich mir, dass man mit diesem Script ja einfach die Arbeitsfläche auslesen könnte ... du machst das schon. ^^

Grüße

Philip
 
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.
 
Zurück