@Dr. Vo
Ich hab' den Script mal ausprobiert und mußte feststellen, daß es doch recht langsam arbeitet, was wohl an der hohen Anzahl der Pfade liegt, die bei einem Histogramm auch in ähnlicher Größenordnung zu erwarten wären.
Ich habe derweil verschieden Sachen ausprobiert.
Meine Lösung ist nun das Erstellen einer Auswahl die 1 Pixel breit und zum entsprechenden Tonwert hoch ist, das ganze von Tonwert 0 bis 255. Anschließen eine Ebene erstellen und diese mit Farbe füllen.
Das Histogramm zeichne ich nun wie folgt:
Code:
for (histogramIndex = 0; histogramIndex < inHistogram.length; histogramIndex++) {
var outputX = inHistogram[histogramIndex] / largestCount * 100
sel(docBreite - 256 - Rand_rechts + histogramIndex, docHoehe - Rand_unten - outputX, outputX, 1)
}
var layer_hh = docRef.artLayers.add()
layer_hh.name = "Histogramm"
layer_hh.fillOpacity = 67
docRef.selection.fill(Color_Histogramm)
docRef.selection.deselect()
}
die Funktion sel() erstellt die Auswahl an der Position x, y mit einer Breite von b und einer Höhe von h. SelectionType.EXTEND sorgt dafür das die Auswahl erweitert wird (+Modus).
Code:
function sel(x,y,h,b) {
selRegion = Array(Array(x, y),Array(x + b, y),Array(x + b, y + h),Array(x, y + h),Array(x, y))
docRef.selection.select(selRegion, SelectionType.EXTEND)
}
Das ganze ist schon etwas schneller, dauert aber auch noch merklich, was wohl daran liegt, das sich das Histogramm an der neu erstellten Auswahl während der Abarbeitung des Scripts ständig anpasst. Hier bräuchte ich einen Befehl der Photoshop sagt, tue nichts (nichts aktuallisieren) bis du wieder an der Reihe bist.
Ursprüglich wollte ich eine "Volltonfarbe..."-Einstellungsebene erstellen, aber auch das geht nicht (wäre eigentlich docRef.artLayers.kind = LayerKind.SOLIDFILL aber da wird gemeckert das nur TEXT oder NORMAL ginge).