# PS 7.0 - Stapelverarbeitung der Aktionen!



## BitMan (13. März 2006)

Hi Tutorials,

ich arbeite grad an meiner Website und möchte die dort veröffentlichten Bilder mit einem Logo versehen. 

Über Aktionen und Stapelverarbeitung geht das.

Beispiel: 
1. Bild öffnen
2. Logo-Datei öffenen
3. Logo kopieren
4. Logo in Bild einfügen
5. Position über STRG T neu festlegen...
6. Speichern

So weit, so gut. Das geht auch bei allen Bildern, die in den Proportionen identisch sind.
Sobald ich das aber mit einem Bild versuche, das in den Maaßen abweicht, bekomme ich das Logo ausserhalb des Bildes, in der Mitte, je nachdem. Aber nicht genau 5px/5px vom linken Rand. Kann ich das regeln?

Problem 2: Bei einer längeren Stapelverarbeitung will Photoshop beim Speichern immer die JPG-Komprimierung neu definieren! Kann man das abschalten?

LG BitMan!


----------



## Philip Kurz (13. März 2006)

Hallo BitMan.

Anstatt die Position via "Transformieren" festzulegen, könntest du die Ebene auch ausrichten. Dazu wählst du das Verschieben-Werkzeug und markierst die gesamte Arbeitsfläche (Strg+A). Nun kannst du dein Objekt mit den Feldern "Untere Kanten ausrichten" und "Linke Kanten ausrichten" platzieren und anschließend noch um deinen gewünschten Rand verschieben. Diese Methode müsste für alle Maße das gleiche Ergebis ergeben.

Weiterhin müsste bei der Stapelverarbeitung eine Option mit der Bezeichnung "'Speichern unter' in Aktion überschreiben" vorhanden sein. Somit wäre auch das zweite Problem gelöst. 

Grüße

Philip


----------



## hotschen (13. März 2006)

Genau dafür hab ich vor einiger Zeit mal ein VB-Script geschrieben. Dazu musst du falls noch nicht geschehen) das Script-Plugin von Adobe installieren.
Diesen Code in eine neue Textdatei kopieren und als "Logo.vbs" abspeichern. Weiter Infos stehen oben im Code:

```
'*************************************************************************
'   Voraussetzung: 
'***   -PS CS(2) oder PS 7 mit installiertem Scriptunterstützungsplugin
'***   -Windows als Plattform, da ein Mac leider mit VBS nicht klar kommt

'   Beschreibung:   
'***   -Zuerst die Pfade und Werte im "Eingabebereich" anpassen.
'***   -Die Ränder beziehen sich immer auf die gewählte Referenzseite (wird
'***    per Inputbox abgefragt).
'***   -Anschliessend die Datei speichern und die Endung von 'txt' in 'vbs'
'***    umbenennen.
'***   -Ihr könnt nun einfach Dateien per Drag'nDrop auf das Script ziehen.
'***    Wird das Script per Doppelklick gestartet, muss der Pfad der zu
'***    bearbeitenden Bilder angegeben werden. Photoshop wird, falls noch 
'***    nicht geschehen, automatisch gestartet.
'*************************************************************************

Option Explicit
Dim appref, objShell, docref, strtRulerUnits, SaveOptions
Dim	datei, logo,i, rand_x, rand_y, Logopfad,qualitaet,quellpfad
Dim	fso, c, speichern_als,speicherpfad,datei2,zaehler,position, x1, x2, y1, y2

'*********************************************************************
'*********Anfang Eingabebereich***************************************

Logopfad="C:\temp\logo.png"	'Pfad zur Logodatei
rand_x=50			'Logoabstand vom vertikalen Bezugsrandand in Pixel
rand_y=50			'Logoabstand vom horizontalen Bezugsrandand in Pixel
speichern_als="jpg"		'in die Anführungszeichen entweder jpg oder psd eintragen
qualitaet=8			'Speicherqualitaet für jpg angeben (1..12)
quellpfad="C:\quellbilder"	'Wenn keine Bilder per Drag'nDrop auf das Script gezogen werden, werden alle Bilder aus diesem Ordner genutzt

'Achtung! Hier den Speicherpfad angeben. Ohne Angabe werden die Bilder im Quellordner gespeichert und überschrieben
speicherpfad=""		'Beispiel: speicherpfad="C:\temp" oder speicherpfad=""		

'*********Ende Eingabebereich*****************************************
'*********************************************************************

Set objShell = WScript.CreateObject("WScript.Shell")
Set appref = CreateObject("Photoshop.Application")
Set logo = appref.Open (Logopfad)
if speichern_als="jpg" Then
	Set SaveOptions= CreateObject("Photoshop.JPEGSaveOptions") 
	SaveOptions.Quality =qualitaet
Else
	Set SaveOptions= CreateObject("Photoshop.PhotoshopSaveOptions")
End If
Do 
	position=InputBox ("Position eingeben:" & chr(13) & "	ur 	- für unten rechts" & Chr(13) & "	um 	- für unten mitte" _
											& Chr(13) & "	ul 	- für unten links" & Chr(13) & "	or 	- für oben rechts" _
											& Chr(13) & "	om 	- für oben mitte" & Chr(13) & "	ol 	- für oben links" _
											, "Referenzseite","ur")
Loop While pruefung(position)=False
	
strtRulerUnits = appRef.Preferences.RulerUnits
appref.Preferences.RulerUnits = 1
logo.Selection.selectall
logo.Selection.copy
zaehler=0
If WScript.Arguments.count<>0 Then 
	For i=0 To WScript.Arguments.count-1
		datei= wscript.arguments.item(i)
		Set docref=appref.open (datei)
		datei2=datei
		logoeinfuegen
		zaehler=zaehler+1
	Next
Else
	Set fso = CreateObject("Scripting.FileSystemObject") 
	Set datei=fso.getfolder (quellpfad)
	For Each c In datei.Files
		Set docref=appref.Open (c.Path)
		datei2=c.path
		logoeinfuegen
		zaehler=zaehler+1
	Next
End If

sub logoeinfuegen()
	Select Case position
		Case "ur"
			x1=docref.Width -rand_x-logo.Width 
			y1=docref.Height - logo.Height -rand_y
			x2=x1+logo.Width 
			y2=y1+logo.Height 
		Case "um"
			x1=docref.Width/2 -logo.Width /2
			y1=docref.Height - logo.Height -rand_y
			x2=x1+logo.Width 
			y2=y1+logo.Height
		Case "ul"
			x1=rand_x
			y1=docref.Height - logo.Height -rand_y
			x2=x1+logo.Width 
			y2=y1+logo.Height
		Case "or"
			x1=docref.Width -rand_x-logo.Width 
			y1=rand_y
			x2=x1+logo.Width 
			y2=y1+logo.Height 
		Case "om"
			x1=(docref.Width -logo.Width )/2
			y1=rand_y
			x2=x1+logo.Width 
			y2=y1+logo.Height
		Case "ol"
			x1=rand_x
			y1=rand_y
			x2=x1+logo.Width 
			y1=y1+logo.Height
	End Select	
	docref.Selection.Select Array(Array(x1 , y1), Array(x2, y1), Array(x2, y2), Array(x1 , y2)), 1, 0, False
	docref.Paste True
	if speichern_als="jpg" Then docref.MergeVisibleLayers 
	If speicherpfad<>"" Then datei=speicherpfad Else datei=datei2
	docref.Saveas datei,SaveOptions, False
	docref.close
End Sub

logo.Close 
appref.Preferences.RulerUnits = strtRulerUnits	
Select Case zaehler
	Case 0
		MsgBox "Es wurden keine Bilder gefunden. Falscher Pfad angegeben?"
	Case 1
		MsgBox "Das Logo wurde in 1 Bild eingefügt." 
	Case 2
		MsgBox "Das Logo wurde in " & zaehler & " Bilder eingefügt." 		
End Select

Function pruefung(position)
Select Case position
	Case "ur"
			pruefung=True
		Case "um"
			pruefung=True
		Case "ul"
			pruefung=True
		Case "or"
			pruefung=True
		Case "om"
			pruefung=True
		Case "ol"
			pruefung=True
		Case 0
			WScript.quit
		Case Else 
			MsgBox "Ungültige Eingabe"
			pruefung=False
	End Select	
End function
```


----------



## BitMan (13. März 2006)

Danke erst mal!

1. DAs mit dem Verschieben funktioniert auch nicht. Schon bei unterschiedlicher DPI wird das Logo nicht mehr in der Ecke platziert!

2. Das Speichern unter abschalten macht keinen Sinn, nun speichert PS gar nix mehr


----------



## BitMan (13. März 2006)

gefällt mir als Programmierer schon viel besser!

1. Frage: wie aktiviere ich Scripting in PS 7.0?
2. Wo finde ich eine Referenz der Photoshop spezifischen Befehle?
3. Kann ich alle Fotoshop-Eigenschaften, Objekte und Methoden direkt ansteuern?


----------



## hotschen (13. März 2006)

1. Dieses Plugin installieren.
2. Bei Adobe oder einfach nach "Photoshop Referenz Guide" suchen (Wer hätte das gedacht 
3. Jein. Nicht alles lässt sich ohne weiteres per Script realisieren, aber dafür gibts ja dann den ScriptListener.

2 Einsteigertutorials zum Scripten findest du hier in der Tutorial-Sektion.


----------



## Philip Kurz (13. März 2006)

Hm, mit dem "Ausrichten an Kanten" war ich wohl wirklich ein wenig zu schnell - jedenfalls hatte ich bis jetzt keine Chance es auszuprobieren. 

Das Speichern ohne Bestätigung müsste aber tadellos funktionieren bzw. es funktioniert. Hast du eventuell keinen "Speichern unter"- oder "Speichern"-Schritt in deiner Aktion?

Hier im übrigen die beiden Tutorials von hotschen - von mir auch liebevoll _"Mr. Photoshop-Script"_ genannt.  

*Scripten mit Photoshop – Teil 1, Der Einstieg*

*Scripten mit Photoshop – Teil 2, Das Script*


----------



## Nils_H (27. August 2007)

Hallo alle beisammen,
ich habe ein ähnliches Problem darum poste ich es hierhinein.
Es verhält sich praktich umgekehrt zu dem in Post 1 beschriebenen:

Und zwar bleibt das Basis Bild identich, die eingefügten Bilder wechseln jedoch.


Ablauf soll sein:

Basis Bild ist offen 
1. einzufügendes Bild öffnen
2. kopieren
3. in offenes Bild einfügen
4.bearbeiten
5. für Web Speichern
=> soweit alles Ok.


Problem:
Bei dem weiteren Durchlauf (es sollen ca 30Bilder auf diese Weise bearbeitet werden, und immer wieder kommen Neue hinzu, Basis bleibt immer gleich) wird wieder das identische Bild eingefügt.

*Wie kann ich definieren das ein anderes, auf das vorherige,folgende Bild eingefügt werden soll?*
in der Aktion müsste also stehen: 
_Öffnen
-Datei/Ordner X_

statt
_Öffnen:
-C: Dokumente.._.

ich hoffe ich konnte mich verständlich ausdrucken


----------



## kerstinbrisbane (27. August 2007)

Hey, hatte heute das gleiche Problem mit CS 2, ich weiß wie ich ein logo bzw. Copyright erstelle. Kann ich das aber auch für mehrere Bilder gleichzeitg übernehmen um nicht jedes einzelne damit versehen zu müssen?
Danke kerst


----------

