# Objektgröße an Bildgröße anpassen



## Merlin732 (7. Juni 2006)

Hallo,

ich möchte eine Action erstellen. Zur Zeit stehe ich vor dem Problem, dass ein Pfad automatisch an die Bildgröße des Orginals angepasst werden soll. Bei Bearbeiten/Skalieren kann man die Pfade nur unabhängig vom eigentlichen Bild ändern.

Weiß jemand wie ich die Pfade (ein Objekt) in Abhängigkeit vom darunterliegenden Bild skalieren kann? Also die Pfade sollen z.B. 90% der Höhe des darunterliegenden Bildes haben ...

Bin für Hilfe sehr dankbar.


----------



## Alexander Groß (7. Juni 2006)

Verstehe gerade überhaupt nichts. Hast du mal ein visuelles Beispiel?

Alex


----------



## Merlin732 (7. Juni 2006)

Naja, dann werde ich etwas konkreter.

Also ich habe eine Menge Bilder und möchte diese mit einem Wasserzeichen versehen.

Das Wasserzeichen soll immer 90% der Bildhöhe einnehmen (soll sich also automatisch anpassen).
Um Arbeit zu sparen, möchte ich eine Action daraus machen, also die Schritte wie ich es mache aufnehmen um das Ganze mit jedem beliebigen Bild zu wiederholen.

Meine Frage ist nun, wie bekomme ich es hin, dass Wasserzeichen sich IMMER auf 90% der Bildhöhe einpendelt?


----------



## Alexander Groß (7. Juni 2006)

Also das beste in Sachen Wasserzeicheneinpassung über Aktionen das ich kenne ist das hier:

http://av.adobe.com/russellbrown/BrandingSM.mov


Alex


----------



## hotschen (7. Juni 2006)

Mit einem Script dürfte das kein Problem sein. Mit ist zwar keine direkte Lösung bekannt, aber mit Hilfe des Scriptlisteners ließe siche das sicher lösen. Wo soll der Ankerpunkt liegen? Stell am besten mal eine Beispiel-PSD online (fiktives Bild, fiktiver Pfad) und erklär es daran, dann sehen wir weiter.


----------



## Philip Kurz (7. Juni 2006)

Vielleicht kann man mit einem Script einfach die Größe der Arbeitsfläche auslesen und die Objektgröße dementsprechend anpassen ... nur eine kleine Idee. 

Grüße

Philip


----------



## hotschen (7. Juni 2006)

Philip Kurz hat gesagt.:
			
		

> Vielleicht kann man mit einem Script einfach die Größe der Arbeitsfläche auslesen und die Objektgröße dementsprechend anpassen ... nur eine kleine Idee.





			
				hotschen hat gesagt.:
			
		

> Mit einem Script dürfte das kein Problem sein.



Sag ich ja. Aber ohne Beispieldatei oder genauere Erklärung wirds schwierig...in welche Richtung soll skaliert werden, von wo aus etc. Den Prozentwert zu bestimmen ist das geringste Problem.


----------



## Merlin732 (8. Juni 2006)

Hallo,

also orientiert habe ich mich an folgendem Video: 

http://av.adobe.com/russellbrown/CS2WatermarkActionSM.mov

Allerdings richte ich das "Wasserzeichen" vertikal und horizontal mittig aus (und nichts unten rechts wie hier).

Naja und die Größenanpassung (automatisch) fehlt eben.

Danke.


----------



## hotschen (8. Juni 2006)

Habs grad mal mit VBS probiert, so ganz Ohne ist es nicht. Wenn du auf nem Mac unterwegs bist, brauchst du erst gar nicht weiterlesen, dann kann ich dir eh nicht helfen, da ich weder Javascript, noch Applescript kann.
Kopierst du den Pfad aus Illustrator? Wenn ja, dann sind ja Höhe und Breite bekannt.
Soll der Pfad immer auf 90% der Höhe proportional transformiert werden? Dann kannst du Probleme kriegen, da er (je nach Bildformat) zu breit sein kann.


----------



## Merlin732 (8. Juni 2006)

Hi,

also ich arbeite mit Windows und erstelle den Pfad in Photoshop (in einer anderen Datei) und kopiere ihn dann rüber und beginne damit die Aktion aufzunehmen.


----------



## Philip Kurz (8. Juni 2006)

hotschen hat gesagt.:
			
		

> Sag ich ja.



Ich weiß.  
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


----------



## hotschen (9. Juni 2006)

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):

```
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:

```
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.


----------

