# Text durch Script verändern



## epolo (20. März 2006)

Hallo,

ich bin gerade an einen Bild das später als Art Startnummer bei einem Treffen verwendet
werden soll. Nun brauche ich eine Script der mir in diesem Bild die zwei Textebene mit
der Nummer verändert weil ich so mit 250 Teilnehmer rechne.

Zum Aufbau der PSD Datei: 
Ich werde zum Schluss drei Ebenen haben ,eine mit dem Bild und zwei mit Text
(der Nummer die auf beiden Ebenen gleich ist) und die zwei letzten Ebenen müssten
halt verändert werden.Ich weiß nicht ab es so geht das man da gleich die Endzahl eingibt
und das Script die Dateien dann erzeugt.

Ich kenne mich mit dieser Programmierung halt überhaupt nicht aus und bin auf fremde
Hilfe angewiesen.

Gruß Epolo


----------



## hotschen (20. März 2006)

So richtig weiß ich zwar immernoch nicht, wie es aussehen soll, aber hier mal ein Schnellschuß. Der zu ändernde Text muss (hier) die oberste Ebene sein. Der Text wird durch Zahlen von 1-'Anzahl' (mußt du im Script anpassen) geändert und im angegeben Verzeichnis als PSD gespeichert.
Kopiere folgenden Code in eine neue Textdatei, passe den Eingabebereich an und speichere sie als "Irgendwas.vbs". anschliessend per Doppelklick starten.

```
Option Explicit
Dim appref, docref, SaveOptions,  speicherpfad, i, anzahl, datei

'*********************************************************************
'*********Anfang Eingabebereich***************************************
speicherpfad="c:\temp"		'Beispiel: speicherpfad="C:\temp" oder speicherpfad=""		
anzahl=5				' Anzahl der Teilnehmer
'*********Ende Eingabebereich*****************************************
'*********************************************************************

Set appref = CreateObject("Photoshop.Application")
If appref.Documents.count<>0 Then
	Set docref=appref.ActiveDocument
Else
	MsgBox "Erst die Datei öffnen!"
	WScript.Quit
End If
Set SaveOptions= CreateObject("Photoshop.PhotoshopSaveOptions")
If docref.ArtLayers(1).kind<>2 Then 
	MsgBox "Die oberste Ebene ist keine Textebene. Script neu starten."
	WScript.Quit
Else
	For i=1 To anzahl
		docref.ArtLayers(1).textitem.contents=cstr(i)
		speichern
	Next
End If

Sub speichern()
	datei=speicherpfad & "\" & i & ".psd"
	docref.Saveas datei,SaveOptions, False
End Sub
```

Bei Fragen einfach nochmal posten.

Gruß hotschen


----------



## epolo (25. März 2006)

Sorry das ich mich erst jetzt melde, hatte aber die letzten Tage voll den Stress auf Arbeit und konnte mich erst heute wieder den Thema widmen.

Also der Script ist erstmal das was ich benötigt habe und Funktioniert auch einwandfrei.
Danke für die schnelle und professionelle Hilfe.
Jetzt hab ich aber mal gekümmert wie ich das aufs Papier bekomme.
Da es ja doch mehrere Exemplare sind und es sich wahrscheinlich nicht lohnt das auf einen Tintenstrahler auszudrucken.
Dort habe die mir gesagt dass ich doch 4 Stück auf ein Blatt machen soll.

Nun meine Frage wie kann man den Script so umschreiben damit er Textebenen umzubenennen?

Zur Erklärung das Bild http://img93.imageshack.us/img93/7023/bild15dh.jpg


----------



## hotschen (26. März 2006)

Probiers mal hiermit:

```
Option Explicit
Dim appref, docref, SaveOptions, qualitaet, speicherpfad, i, anzahl, datei, zaehler

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

speicherpfad="c:\temp"		'Beispiel: speicherpfad="C:\temp" oder speicherpfad=""		
anzahl=10				' Anzahl der Teilnehmer
'*********Ende Eingabebereich*****************************************
'*********************************************************************

Set appref = CreateObject("Photoshop.Application")
If appref.Documents.count<>0 Then
	Set docref=appref.ActiveDocument
Else
	MsgBox "Erst die Datei öffnen!"
	WScript.Quit
End If
Set SaveOptions= CreateObject("Photoshop.PhotoshopSaveOptions")
zaehler=1
Do 
	For i=4 To 1 Step -1
		docref.ArtLayers(i).textitem.contents=cstr(zaehler)
		zaehler=zaehler+1
	Next
	speichern
Loop Until zaehler>=anzahl

Sub speichern()
	datei=speicherpfad & "\" & zaehler-4 & "-" & zaehler-1 & ".psd"
	docref.Saveas datei,SaveOptions, False
End Sub
```

Allerdings würde ich hier einen anderen Weg gehen, indem ich die Bilder einzeln bearbeite und anschliessend per Script in ein neues A4-Dokument kopiere.

Gruß hotschen


----------



## epolo (26. März 2006)

Na gut mir ist das egal, ist wahrscheinlich einfacher das einzelne Bild zu bearbeiten und dann das zusammenfügen.

Ich werde jetzt erstmal den zweiten Script versuchen und mich dann wieder melden.

P.S. Ich kann mich immer nur BEDANKEN für die Hilfe


----------



## hermiohr (15. April 2007)

Hallo,

möchte so was ähnliches machen wie Epolo, der erste Script würde auch dazu vollkommen reichen. Nur bräuchte ich als Endergebnis eine JPG Datei und keine PSD Datei.
Was muss dazu in den Script verändert werden ?

Gruß Hermiohr


----------



## hotschen (9. Mai 2007)

Sorry wegen der späten Antwort.
Mit ein wenig Eigeninitiative hättest du das aber auch so rausbekommen. Ein Blick in die Beispielscripte, die PS mitbringt, verrät dir schon die Lösung:


```
Dim jpgSaveOptions As Photoshop.JPEGSaveOptions
    Set jpgSaveOptions = New Photoshop.JPEGSaveOptions
    jpgSaveOptions.EmbedColorProfile = True
    jpgSaveOptions.FormatOptions = psStandardBaseline
    jpgSaveOptions.Matte = psNoMatte
    jpgSaveOptions.Quality = 1
    docRef.SaveAs "c:\temp\myFile", Options:=jpgSaveOptions, asCopy:=True, extensionType:=extType
```

In dem speziellen Fall heißt das:

```
Set SaveOptions= CreateObject("Photoshop.PhotoshopSaveOptions")
```
durch
o.g. Code ersetzen (nicht benötigte Einstellungen kann man natürlich weglassen.

Gruß hotschen

PS: Man hätte natürlich die PSD's im Anschluß auch durch eine Aktion umwandeln können.


----------

