PDA

Vollständige Version anzeigen : Sonstiges Javascript Größe auf 1zu1 bringen


Sidamo
09.01.17, 11:44
Hallo,
wir müssen sehr regelmäßig etliche Dokumente in 1 zu 1 ausdrucken die wir vorher mit Maßstab fotografiert haben.
Das sind etliche blöde Schritte die ich gerne vereinfacht hätte damit es schneller und sicherer funktioniert.
Hab mal angefangen ein Eingabefeld in JavaScript zu schreiben.
Das funktioniert auch schon ziemlich gut.
Probleme hab ich beim Werte kopieren und eintragen über JavaScript
Also die Werte aus dem Menü kopieren und in PS eintragen.
//Bildauflösung Wert kopieren;// Bildauflösung Wert in das Auswahlwerkzeug eintragen; und //Ausschneidewerkzeug anwählen
Wer kennt sich den in JavaScript gut aus und weiß wie die Befehle heißen?

Gunnar




Script:
// Größe per JavaScript auf 1 zu 1 bringen
//startet Photoshop
#target photoshop
app.bringToFront();

//Ausschneidewerkzeug auswählen
//nach ausschneiden Menü starten
//Nun beginnt der eigentliche Aufbau des Dialogs. Die Maße werden immer in der Reihenfolge [links, oben, rechts, unten] angegeben. Das sind immer die X- und Y-Koordinaten der linken oberen und rechten unteren Ecke. Um dies zu vereinfachen, wird das Fensterobjekt für den Eingabedialog mit egdg für »Eigener Dialog« abgekürzt. Zunächst muss dieses Fensterobjekt aber erst einmal erzeugt werden.
//Menü
//Überschrift 1
var egdg = new Window ('dialog',
'Größe per JavaScript auf 1 zu 1 bringen', [200,200,560,420]);
//Überschrift 2
egdg.oben = egdg.add('panel',[15,10,340,150],
'Ausrichtung und Größe des Maßbandes');
//Unterschrift
egdg.oben.pixels = egdg.oben.add
('statictext',[15,80,300,40],'Immer nur ein Wert eintragen Quer oder Hoch!!');
//Größe in cm Quer
egdg.oben.label_xy = egdg.oben.add

('statictext',[15,20,150,40],'Quer Maßband-Größe: ');
egdg.oben.docx = egdg.oben.add
//Eingabefeld
('edittext',[150,20,180,40],'');

egdg.oben.pixels = egdg.oben.add
('statictext',[235,20,300,40],' cm');

//Größe in cm hoch
egdg.oben.label_xy = egdg.oben.add
('statictext',[15,45,150,65],'Hoch Maßband-Größe: ');
egdg.oben.docy = egdg.oben.add
//Eingabefeld
('edittext',[150,45,180,65],'');

egdg.oben.pixels = egdg.oben.add
('statictext',[235,45,300,65],' cm');
//OK und Abbrechen Button
egdg.unten = egdg.add('panel', [15,155,340,210],'Ausführen');
egdg.unten.ok = egdg.unten.add('button', [25,15,85,35],'OK', {name:'ok'});
egdg.unten.cancel = egdg.unten.add('button', [100,15,200,35],'Abbrechen', {name:'cancel'});
var ok = egdg.show() == 1;

//Die Variable ok wird gebraucht, damit alles Folgende nur ausgeführt wird, wenn ein Klick auf den OK-Button erfolgt ist. Beim Klick auf Abbrechen verschwindet der Dialog.
var ok = egdg.show() == 1;
//Die Floskel with (egdg.oben) erspart es uns, zusammen mit der geschweiften Klammer die beiden übergeordneten Objekte vor jedes abgefragte Element zu schreiben.
with (egdg.oben){
//Zahlenwerte für die Maßstabsgröße, die als Text übergeben werden, in Zahlen umgewandelt. Mit UnitValue in eine Einheit mit Wert umgewandelt
var Dok_Breite = UnitValue(docx.text,"px");
var Dok_Hoehe = UnitValue(docy.text,"px");

}
//wenn OK gedrückt
if(ok==true){
//wenn breite größer 0
if((Dok_Breite*1 ) >(0)){
// breite eintragen in die Bildgröße (fehlt noch)
}
//wenn höhe größer 0
if((Dok_Hoehe*1)>(0))
// höhe eintrage in die Bildgröße (fehlt noch)
}
else{
// wenn breite und höhe nicht größer 0 dann sprimg zum Eingabefeld (fehlt noch)
}



//Bildauflösung Wert kopieren (fehlt noch)
// Bildauflösung Wert in das Auswahlwerkzeug eintragen (fehlt noch)

//Beschnittenede Datei wieder durch Rückschritt herstellen (fehlt noch)

//Ausschneidewerkzeug anwählen (fehlt noch)

Sidamo
09.01.17, 14:57
Das Ausschneidewerkzeug = Crop Tool
Die Bildgröße hat ja mit Höhe, Breite und Auflösung gleich Felder ist wohl aber ein anderes Werkzeug oder?
Wie heißt das denn? Ist das resitzeImag?
Gunnar

Sidamo
09.01.17, 15:17
Wenn ich die
Bildgröße in Höhe 10 cm, 72 DPI, 283 Pixel ändere zeichnet PS 5.1 das auf:
// ================================================== =====
var idImgS = charIDToTypeID( "ImgS" );
var desc3 = new ActionDescriptor();
var idHght = charIDToTypeID( "Hght" );
var idRlt = charIDToTypeID( "#Rlt" );
desc3.putUnitDouble( idHght, idRlt, 283.464567 );
var idRslt = charIDToTypeID( "Rslt" );
var idRsl = charIDToTypeID( "#Rsl" );
desc3.putUnitDouble( idRslt, idRsl, 72.000000 );
var idCnsP = charIDToTypeID( "CnsP" );
desc3.putBoolean( idCnsP, true );
var idIntr = charIDToTypeID( "Intr" );
var idIntp = charIDToTypeID( "Intp" );
var idBcbc = charIDToTypeID( "Bcbc" );
desc3.putEnumerated( idIntr, idIntp, idBcbc );
executeAction( idImgS, desc3, DialogModes.NO );


Das sehe ich dort raus
Auflösung = desc3.putUnitDouble( idRslt, idRsl, 72.000000 );
10 cm = Pixel 283 = desc3.putUnitDouble( idHght, idRlt, 283.464567 );
Höhe = Hght
Gunnar

heikehk
19.01.17, 08:36
Klingt plausibel...
Warum druckst du noch mal nicht einfach in Originalgrösse?