Antworten auf deine Fragen:
Neues Thema erstellen

Photoshop Javascript: Pinsel Deckkraft setzen ?!

F

FrankGerman

Guest

Hallo,
ich programmiere gerade ein HTML 5/javascript panel fuer Photoshop CC.
Weiss jemand ob man per javascript die Deckkraft/Fluss von Pinseln setzen kann ?
Evtl. auch den Blendmodus des Pinsels ?
Diese Eigenschaften gehoeren wohl nicht direkt zu den Pinsel (brush) Eigenschaften in javascript,
sondern wohl vom object "currenttool". Die Eigenschaften Deckkraft und Blendmodus werden beim Aufzeichnen einer Aktion nicht mit aufgezeichnet und lassen sich sich somit auch nicht einfach durch den Skriplistener aufspueren. Da die Befehle und Objekte innerhalb von Photoshop javascipt sehr kryptisch sind, ist es nicht so einfach auf die richtige Vorgensweise zu schliessen.
Gruesse, Frank.
 

Photoshop

G

Gelöschtes Mitglied 633957

Guest

Hallo Frank,

willkommen im Forum.
Zumindest Deckkraft und Fluss lassen sich über die Tastatur steuern. Vielleicht gibt es eine Möglichkeit den Tastendruck zu simulieren. Keine Ahnung ob das klappen kann, ist nur eine Idee die mir in den Kopf gekommen ist.

So erhälst Du schon einmal die KeyCodes für die Tasten:
HTML:
<!doctype html>
<head>
  <meta charset="UTF-8">
</head>
  <script>
  window.onkeyup = function(event) {
    var key = event.keyCode ? event.keyCode : event.which;
    document.getElementById('taste').innerHTML = 'Gedrückte Taste = ' +key;
  }
  </script>
<body>
  <div id="taste">Drücke eine Taste und erhalte den passenden Wert!</div>
</body>
</html>

Wie gesagt, ich weiß nicht ob das klappen kann und hoffentlich hat einer der Cracks hier im Forum eine sinnvolle Idee. Wenn nicht, ist es vielleicht eine Überlegung wert.

Wenn Du selber eine Lösung findest, bitte sei so gut und poste sie hier. Werde mich demnächst (in einem halben Jahr, oder so) selber mit dem Erstellen eines CC-Panels auseinandersetzen und mich würde das auch interessieren.

Greetz, Ty
 
F

FrankGerman

Guest

Hallo, danke fuer die Antwort. An keyboard shortcuts hatte ich auch schon gedacht. Jedoch weiss ich noch nicht wie man keyboard shortcuts aus javascript an Photoshop senden kann. Ansonsten kann ich schon einiges vom Panel aus Aufrufen. Ist ganz interessant sich das mal anzusehen. Wenn ich noch mehr rausgefunden habe werde ich das auch mal zusammentragen, da die infos dazu sehr spaerlich sind.
Gruesse aus Aachen, Frank
 
F

FrankGerman

Guest

Die xtools werde ich mir mal anschauen. Das Problem bei aktionen ist halt, dass die Werte zB von der Deckkraft nicht mit aufgenommen werden. Daher kann sich nicht ansehen, wie diese im script gesetzt werden. Bei einer Werkzeugvorgabe werden alle werte auf bestimmte werte gesetzt. Wenn man nur die Deckkraft oder den Blendmode aendern will ist das dann wieder etwas kompliziert. Die Pinsel groesse, haerte etc kann ich schon setzen. Die deckkraft/blendmode des pinsel gehoert aber wohl nicht zur gleichen objektklasse. Das ist nicht so einfach rauszufinden, wie objekte in javascript geschachtelt sind, und wie man einzelne einstellungen anspricht.
 

Andre_S

unverblümt

Das Problem bei aktionen ist halt, dass die Werte zB von der Deckkraft nicht mit aufgenommen werden.
a. In der Aktionpalette im Contextmenu Werkzeugaufzeichnung zulassen
b. Die Aktion nimmt (wie schon erwähnt) natürlich das Aufrufen einer Werkzeugvorgabe mit auf

Das ist nicht so einfach rauszufinden, wie objekte in javascript geschachtelt sind, und wie man einzelne einstellungen anspricht.
Nicht wenn man genanntes Script gar nicht ausprobiert hat ;)

Bearbeiten funktioniert mit Chrome immer noch nicht. Geht das nur mir so?
http://www.tonton-pixel.com/blog/

Dann währe da noch der
 
Zuletzt bearbeitet von einem Moderator:

Andre_S

unverblümt

Das wird das Problem leider nicht lösen. Modus, Deckkraft und Fluss des Werkzeugs werden in Ps weder aufgezeichnet noch protokolliert.
Ich weiß, nur sollte die Aktivierung des Pinsels mit aufgezeichnet werden können sonst bringt der restliche Weg nichts ;)
Bei meinen Retuscheaktionen aktiviere ich am Ende immer gleich den passenden Retuschepinsel mit passender Deckkraft und Fluss und markiere die Maske.
 
G

Gelöschtes Mitglied 633957

Guest

aktiviere ich am Ende immer gleich den passenden Retuschepinsel..
[das geht auch ohne die Werkzeugaufzeichnung]
..mit passender Deckkraft und Fluss
Wie soll das funktionieren? Änderungen an Deckkraft und Fluss für das Werkzeug werden nicht in die Aktion geschrieben. Beim User wird nach dem Durchlauf der Aktion zwar das passende Werkzeug von der Aktion ausgewählt, Deckkraft und Fluss werden aber die beim User, vor Durchlauf der Aktion, eingestellten Werte bleiben!

Bitte erkläre kurz wie Du das anstellst. Ich fürchte, wir könnten aneinander vorbei reden oder die Aufzeichnung der Werte ist nur unter bestimmten Voraussetzungen möglich die mir nicht bekannt sind!
 

Andre_S

unverblümt

tynick - einfach mal alle Antworten lesen. So wie ich es erleutert habe funktioniert es.
Werzeugvorgabe anlegen und diese in der Aktion ansprechen.
"In der Aktionpalette im Contextmenu Werkzeugaufzeichnung zulassen" war ein ganz allgemeiner Tipp.
 
G

Gelöschtes Mitglied 633957

Guest

So wie ich es erleutert habe funktioniert es.
Dann verstehe ich Dich evtl. nicht richtig!

Werzeugvorgabe anlegen und diese in der Aktion ansprechen.
Aber wie? Hier ein Beispiel:

Aufgabe: Pinselstrich in 25% Deckkraft mit Aktion aufzeichnen.
Mein Versuch: VIDEO
Resultat: Hat der User nicht bereits 25% Deckkraft vor dem Abspielen der Aktion eingestellt, wird der Strich auch nicht mit 25% Deckkraft durchgeführt.

Frage: Was meinst Du mit Werkzeugvorgabe anlegen?

Edit: Video gelöscht!
 
Zuletzt bearbeitet von einem Moderator:

Andre_S

unverblümt

Frage: Was meinst Du mit Werkzeugvorgabe anlegen?

Festlegen: 1. 2. 3. neue W.
Aufrufen: 1. 2. 4.

111olu9f.jpg
 
G

Gelöschtes Mitglied 633957

Guest

Festlegen: 1. 2. 3. neue W.
Aufrufen: 1. 2. 4.
Jetzt verstehe ich! :daumenhoch

Wenn man die Erstellung der Vorgabe mit in die Aktion aufnimmt, muss man nur noch daran denken, diese am Ende der Aktion auch wieder zu entfernen, damit keine (Fehler-) Meldungen beim 2ten Ausführen der Aktion entstehen!

Vielen Dank!
 

Andre_S

unverblümt

Jetzt verstehe ich! :daumenhoch

Wenn man die Erstellung der Vorgabe mit in die Aktion aufnimmt, muss man nur noch daran denken, diese am Ende der Aktion auch wieder zu entfernen, damit keine (Fehler-) Meldungen beim 2ten Ausführen der Aktion entstehen!

Vielen Dank!
2 mal falsch, die Erstellung wird natürlich nicht aufgenommen und wenn man sie wieder löscht würde das ganze nicht mehr funktionieren.
Die Vorgabe muss vor Aufnahme der Aktion bereits bestehen.
 

Andre_S

unverblümt

Ich gebs auf. Vorgaben erstellt man nicht um sie zu löschen schon gar nicht in einer Aktion.
Ich spring auch nicht in Brunnen nur weils möglich ist.
 
G

Gelöschtes Mitglied 633957

Guest

Das ist Schade! Warum sollte man im Zuge der Lösungsfindung nicht mit Möglickeiten spielen? Es sind Gedankenspiele - ich doziere hier nicht!

In diesem Thread geht es doch darum, herauszufinden wie man Ps, für ein zu erstellendes Panel, so manipulieren kann, dass die Deckkraft eines ausgewählten Werkzeugs eingestellt wird. Idealerweise via Ansprache über ein Script.

Andre meint, dass man "Erstellung" und "Löschung"es nicht aufnehmen sollte
Habe ich jetzt auch verstanden.
Mein Gedanke war eher, die Vorgabenerstellung aufzuzeichnen um die Aktion in ein Script zu wandeln um möglicherweise einen Hinweis auf einen Befehl oder eine Funktion zu finden, die dem TE seinem Ziel einen Schritt näher bringt. Gibt es aber keine Funktion oder keinen Befehl den man in einem Script verwenden kann, ist es evtl. dennoch eine Alternative - allein weil es möglich ist.
Dann müsste, wenn die Erstellung in eine Aktion eingebunden wird, irgendwo die Vorgabe auch wieder gelöscht werden, denn sonst wird es eine Fehlermeldung geben, wird versucht die Vorgabe unter gleichem Namen erneut zu erstellen - bei z.B. einem zweiten Aufruf der Aktion. Sich mit gleichen Vorgaben unter immer neuen Namen zuzumüllen ist ja keine strebenswerte Option.

Vorgaben erstellt man nicht um sie zu löschen schon gar nicht in einer Aktion.
Das mag ja sein, nur die Aussage, das man dass nicht macht, weil das so ist, hilft nicht weiter. Schreibe dann doch bitte auch warum das so ist. Wo genau liegen die Probleme?

Ich für meinen Teil sehe in diesem Thread noch keine zufriedenstellende Lösung für das Problem des TE.
Wenn es am Ende darauf hinausläuft, mit dem erstellten Panel eine zu installierende Werkzeugvorgabe mitzuliefern, dann soll es so sein. Vielleicht geht es aber auch eleganter und auf dem Weg dahin sollte auch ein Brainstorming erlaubt sein, finde ich!
 

Andre_S

unverblümt

Das zu aufwändigeren Paneln auch Werkzeugvorgaben, Pinsel, Aktionen... mitgeliefert werden ist keine Ausnahme und dem Zweck dienlich.
Ich nutze auch ein selbst zusammengestelltes Pannel welches auf solche zum Workflow gehörigen Dinge zurückgreift.
Adobe bietet aber auch die Referenz zu Aktionscript an.
 
Zuletzt bearbeitet:
F

FrankGerman

Guest

Die Idee beim Aufzeichnen einer Aktion mal eine Werkzeugvorgabe zu definieren fand ich ganz gut, da ich das noch nicht probiert hatte. Leider werden dabei die schritte auch nicht alle einsehbar mitaufgezeichnet. Ich hatte auch mal probiert eine Bewegung des Pinsels mitaufzunehmen, dabei zeigt er einem aber auch nicht mehr an (weder in der aktion noch im skriptlistener). Das Problem bei Werkzeugvorgaben ist es, das man dann eine feste Vorgabe hat, bei der gleich mehrere parameter gesetzt werden. Mein Ziel ist es, die aktuellen Einstellungen beizubehalten und nur die Deckkraft, Blendmodus und evtl paar andere einzelne Sachen zu aendern. Natuerlich kann man die auch so manuell einstellen, waere aber trotzdem schoen zu sehen ob man die nochmal von einem Panel aus veraendern kann. zB waehlt man den clonestamp im panel und moechte dann mal ueber das Panel den Blendmodus auf normal/dunkler/heller stellen. Oder welche ebenen aufgenommen werden sollen: aktuelle ebene, oder auch die darunter. Dabei soll die groesse des pinsels bzw des clonestamps nicht veraendert werden.

Momentan lese ich die Deckkraft folgendermassen aus:

function BrushOpacityGet()
{
var ref = new ActionReference();
ref.putEnumerated(charIDToTypeID("capp"),
charIDToTypeID("Ordn"),
charIDToTypeID("Trgt")
);
var AD = executeActionGet(ref);
AD = AD.getObjectValue(stringIDToTypeID("currentToolOptions"));
return(AD.getInteger(stringIDToTypeID("opacity")));
}

Da man die auslesen kann, denke ich mir sollte man sie auch irgendwie schreiben koennen.
 
Bilder bitte hier hochladen und danach über das Bild-Icon (Direktlink vorher kopieren) platzieren.
Antworten auf deine Fragen:
Neues Thema erstellen

Willkommen auf PSD-Tutorials.de

In unseren Foren vernetzt du dich mit anderen Personen, um dich rund um die Themen Fotografie, Grafik, Gestaltung, Bildbearbeitung und 3D auszutauschen. Außerdem schalten wir für dich regelmäßig kostenlose Inhalte frei. Liebe Grüße senden dir die PSD-Gründer Stefan und Matthias Petri aus Waren an der Müritz. Hier erfährst du mehr über uns.

Stefan und Matthias Petri von PSD-Tutorials.de

Nächster neuer Gratisinhalt

03
Stunden
:
:
25
Minuten
:
:
19
Sekunden

Flatrate für Tutorials, Assets, Vorlagen

Zurzeit aktive Besucher

Statistik des Forums

Themen
118.636
Beiträge
1.538.485
Mitglieder
67.559
Neuestes Mitglied
hanuta
Oben