Anzeige

[CS6] Bildhelligkeit über JavaScript

[CS6] - Bildhelligkeit über JavaScript | PSD-Tutorials.de

Erstellt von TheLion6, 06.03.2014.

  1. TheLion6

    TheLion6 Rammsteinfan

    Dabei seit:
    18.11.2011
    Beiträge:
    57
    Geschlecht:
    männlich
    Ort:
    Essen
    Software:
    Cinema 4D R16 Student
    Kameratyp:
    Canon EOS 60D
    Bildhelligkeit über JavaScript
    Hi,

    gerade hat mich JavaScript voll im Griff, und ich bin dabei das Scripten für Photoshop zu erlernen.
    Ich möchte gerne eine Funktion realisieren, die die mittlere Bildhelligkeit in einem Bildbereich bestimmt, und danach dann die eine oder andere Variable mit einer anderen füllt.
    Das Script soll nachher sagen:

    Code (Text):
    1. hell = new solidColor;
    2. hell.rgb.red = 255;
    3. hell.rgb.blue = 255;
    4. hell.rgb.green = 255;
    5. dunkel = new solidColor;
    6. dunkel.rgb.red = 000;
    7. dunkel.rgb.blue = 000;
    8. dunkel.rgb.green = 255;
    9.  
    10. if (helligkeit > 50) { //Beide Werte entweder in Prozent oder von mir aus auch auf der Skala 0-255
    11.     textebene.textItem.color = hell
    12. }
    13. else {
    14.     textebene.textItem.color = dunkel
    15. }
    Aber wie kann ich die mittlere Bildhelligkeit bestimmen? Geht das in Kombination mit einer Aktion die wie folgt aussieht:
    Hintergrundebene duplizieren
    Ebene benennen
    Auswahl erstellen
    Gaußscher Weichzeichner
    Skripten
    Ebene löschen //Damit wäre dann die duplizierte Ebene gemeint

    Über Antworten wäre ich erfreut
     
    #1      
  2. ph_o_e_n_ix

    ph_o_e_n_ix acromyniker

    Dabei seit:
    08.12.2013
    Beiträge:
    1.762
    Geschlecht:
    männlich
    Bildhelligkeit über JavaScript
    Was willst du denn mit dem Gaußschen Weichzeichner? Nimm doch einfach den "Durchschnitt berechnen"-Filter
     
    #2      
  3. TheLion6

    TheLion6 Rammsteinfan

    Dabei seit:
    18.11.2011
    Beiträge:
    57
    Geschlecht:
    männlich
    Ort:
    Essen
    Software:
    Cinema 4D R16 Student
    Kameratyp:
    Canon EOS 60D
    Bildhelligkeit über JavaScript
    Wusste ich noch gar nicht, dass es den gibt. Also Ebene duplizieren, auswahl, Filter und dann? Wie les ich den aus? Sorry, bin halt Neuling :eek:
     
    #3      
  4. ph_o_e_n_ix

    ph_o_e_n_ix acromyniker

    Dabei seit:
    08.12.2013
    Beiträge:
    1.762
    Geschlecht:
    männlich
    Bildhelligkeit über JavaScript
    Nur weil du Neuling bist, heißt das ja nicht, dass du automatisch eine Lösung auf dem Silbertablett geliefert bekommst...

    Gerade als Neuling sollte man sich selbst um Antworten bemühen, denn nur so bekommt man auch mehrere Lösungswege und deren Probleme mit. Wenn du hingegen bei jedem kleinen Problem sofort nach einer Lösung bettelst und diese womöglich auch noch bekommst, wirst du nie dazu lernen...

    Eine sehr ergiebige Quelle für Skriptprobleme ist - wer hätte es gedacht - die Homepage des Herstellers...

    http://forums.adobe.com/thread/509602
     
    #4      
  5. TheLion6

    TheLion6 Rammsteinfan

    Dabei seit:
    18.11.2011
    Beiträge:
    57
    Geschlecht:
    männlich
    Ort:
    Essen
    Software:
    Cinema 4D R16 Student
    Kameratyp:
    Canon EOS 60D
    Bildhelligkeit über JavaScript
    Stimmt das, wenn ich in einem Dokument von 1200px Höhe und 1800px Breite die Farbe in einer Selektion von 85px am unteren Bildrand auswerten möchte?
    Code (Text):
    1. function getSelectionColor( x, y, sampleSize ){
    2.      try{
    3.           activeDocument.selection.select([[1115,0],[1200,0],[1200,1800],[1115,1800]] SelectionType.REPLACE, 0, false);
    4.           activeDocument.activeLayer.applyAverage();
    5.           var re = RegExp( '[123456789]' );
    6.           var sColor = new SolidColor();
    7.           if ( activeDocument.mode == DocumentMode.GRAYSCALE ) {
    8.               var gv = re.exec(activeDocument.channels[0].histogram.toString() ).index/2;
    9.               sColor.gray.gray = 100 * (gv/255);
    10.           }
    11.           if ( activeDocument.mode == DocumentMode.RGB ) {
    12.               sColor.rgb.red = re.exec(activeDocument.channels[0].histogram.toString() ).index/2;
    13.               sColor.rgb.green = re.exec( activeDocument.channels[1].histogram.toString() ).index/2;
    14.               sColor.rgb.blue = re.exec( activeDocument.channels[2].histogram.toString() ).index/2;
    15.           }
    16.           if ( activeDocument.mode == DocumentMode.LAB ) {
    17.               var lv = re.exec(activeDocument.channels[0].histogram.toString() ).index/2;
    18.               sColor.lab.l = 100 * ( lv/255 );
    19.               sColor.lab.a = ( re.exec( activeDocument.channels[1].histogram.toString() ).index/2 ) - 128;
    20.               sColor.lab.b = ( re.exec( activeDocument.channels[2].histogram.toString() ).index/2 ) -128;
    21.           }
    22.           if ( activeDocument.mode == DocumentMode.CMYK ) {
    23.               var cv = re.exec(activeDocument.channels[0].histogram.toString() ).index/2;
    24.               sColor.cmyk.cyan = 100 * (1-(cv/255));
    25.               cv = re.exec(activeDocument.channels[1].histogram.toString() ).index/2;
    26.               sColor.cmyk.magenta = 100 * (1-(cv/255));
    27.               cv = re.exec(activeDocument.channels[2].histogram.toString() ).index/2;
    28.               sColor.cmyk.yellow = 100* (1-(cv/255));
    29.               cv = re.exec(activeDocument.channels[3].histogram.toString() ).index/2;
    30.               sColor.cmyk.black = 100 * (1-(cv/255));
    31.           }
    32.           executeAction( charIDToTypeID('undo'), undefined, DialogModes.NO );
    33.           return sColor;
    34.      }catch(e){}
    35. }
     
    #5      
  6. ph_o_e_n_ix

    ph_o_e_n_ix acromyniker

    Dabei seit:
    08.12.2013
    Beiträge:
    1.762
    Geschlecht:
    männlich
    Bildhelligkeit über JavaScript
    Nein, deine Koordinaten stimmen nicht - zudem enthält die selbe Befehlszeile noch einen weiteren Fehler...
     
    #6      
  7. pixxxelschubser

    pixxxelschubser Realist

    Dabei seit:
    19.02.2008
    Beiträge:
    7.155
    Software:
    für jeden Zweck das Richtige
    Kameratyp:
    hab ich auch
    Bildhelligkeit über JavaScript
    ph_o_e_n_ix möchte dir wahrscheinlich damit sagen:
    Die Extendscript-Dokumentation für selection ist leider etwas unzureichend beschrieben. Erstelle eine selection immer nach dem Schema:
    Code (Text):
    1. activeDocument.selection.select([[topleft_x,y],[bottomleft_x,y],[bottomright_x,y],[topright_x,y]], SelectionType.REPLACE (type | Standard-optional), 0 (feather | Standard-optional), false (antiAlias - true = Standard-optional));
    … und vergiss bitte keine Kommata, wenn du die optionalen Parameter verwendest.
    ;)

    Noch eine Frage:
    Mit welchem Editor bearbeitest du eigentlich die Skripte?
     
    #7      
  8. ph_o_e_n_ix

    ph_o_e_n_ix acromyniker

    Dabei seit:
    08.12.2013
    Beiträge:
    1.762
    Geschlecht:
    männlich
    Bildhelligkeit über JavaScript
    Eigentlich hab ich ihm ganz bewusst das Schema nicht einfach aufgezeigt und den Komma-Fehler nur wage angedeutet, weil er es sich bisher bei anderen Problemen etwas einfach gemacht hat. ;)

    Und da er das Skripten ja lernen möchte, wird er auf Grund der dürftigen Dokumentation Seitens Adobe ohnehin vieles im Internet recherchieren und andere Skripte auseinandernehmen müssen.
     
    #8      
    TheLion6 gefällt das.
  9. TheLion6

    TheLion6 Rammsteinfan

    Dabei seit:
    18.11.2011
    Beiträge:
    57
    Geschlecht:
    männlich
    Ort:
    Essen
    Software:
    Cinema 4D R16 Student
    Kameratyp:
    Canon EOS 60D
    Bildhelligkeit über JavaScript
    Der Kommafehler ist mir auch schon aufgefallen, hab ich auch behoben.
    Das mit der Auswahl und dem Filter hab ich jetzt vorerst auf Eis gelegt, und das ganze über einen Dialog gelöst ;) Zwei Radiobuttons, wenn der eine Aktiv ist dann ist es weiße Schrift, wenn der andere Aktiv ist ist es schwarze.

    ph_o_e_n_ix, ich bin dabei dein Script nachzubasteln. Bei der Auslesung der Daten scheitert es, der Part aus dem ExifStamp-Script welches ich erst modifiziert und danach noch einmal nachgeschrieben habe, funktioniert noch nicht. Deswegen möchte ich versuchen, das jetzt alles über folgendes Schema nachzubauen. Ich weis dass das ganze noch auskommentiert ist ;)
    Code (Text):
    1.  
    2. /* function datenerfassung(){
    3.     var exifInfo = "";
    4.     try {
    5.         xml = doc.xmpMetadata.rawData;
    6.         ObjektivOff = xml.indexOf("<aux:Lens>") + "<aux:Lens>".length;
    7.         if(ObjektivOff > 0) {
    8.             Objektiv = xml.substr(ObjektivOff, xml.length - ObjektivOff);
    9.             Objektiv = Objektiv.substr(0,Objektiv.indexOf("</aux:Lens>"));
    10.             }
    11.        try {
    12.         KameraOff = xml.indexOf("<aux:Model>") + "<aux:Model>".length;
    13.         if(KameraOff > 0) {
    14.             Kamera = xml.substr(ObjektivOff, xml.length - ObjektivOff);
    15.             Kamera = Kamera.substr(0,Kamera.indexOf("</aux:Model>"));
    16.             }
    17.     }
    18. }
    19. */
    20.  
    Das sollte gehen, oder?

    Nächstes Problem, die Textebene will nicht. Nachfolgend erst die Festlegung von farbe und dann noch die eigentliche Texterstellung.

    Code (Text):
    1. function schemadialog(){
    2.     var dialog = new Window ('dialog','Farbschema', [200,200,500,365]);
    3.     dialog.oben = dialog.add('panel',[15,10,285,80],'Bitte wählen sie eines der Farbschemen aus!');
    4.     dialog.oben.radio1 = dialog.oben.add ('radiobutton', [15,0,100,80],'Hell');
    5.     dialog.oben.radio1.value = true;
    6.     dialog.oben.radio2 = dialog.oben.add ('radiobutton', [107,0,200,80],'Dunkel');
    7.     dialog.unten = dialog.add('panel', [15,90,285,150],'Ausführen');
    8.     dialog.unten.ok = dialog.unten.add('button', [25,15,85,35],'Ok', {name:'ok'});
    9.     dialog.unten.cancel = dialog.unten.add('button', [100,15,200,35],'Abbrechen', {name:'cancel'});
    10.     ok = dialog.show() == 1;
    11.     if (dialog.oben.radio1.value = true) {
    12.         farbe = hell
    13.     }
    14.     else {
    15.         farbe = dunkel
    16.     }
    17. }
    18. function generatetext() {
    19.     textebene = doc.artLayers.add();
    20.     textebene.kind = LayerKind.TEXT;
    21.     textebene.name = "EXIF";
    22.     textebene.textItem.color = farbe;
    23.     textebene.textItem.content = "Hallo Welt";
    Editoren sind Notepad++ und ExtendScript Toolkit
     
    Zuletzt bearbeitet: 08.03.2014
    #9      
  10. ph_o_e_n_ix

    ph_o_e_n_ix acromyniker

    Dabei seit:
    08.12.2013
    Beiträge:
    1.762
    Geschlecht:
    männlich
    Bildhelligkeit über JavaScript
    Da bekomm ich echt Kopfschmerzen, wenn jemand von einem Ansatz zum anderen springt, ohne das Problem zu ergründen, wenn mal etwas nicht gleich funktioniert... ;)

    Nungut, wenn du lieber manuell auswählen möchtest, welche Schriftfarbe verwendet werden soll, ist das natürlich dir überlassen...


    Code (Text):
    1. var doc = activeDocument;
    2.  
    3. function schemadialog(){
    4.     var dialog = new Window ('dialog','Farbschema', [200,200,500,365]);
    5.     dialog.oben = dialog.add('panel',[15,10,285,80],'Bitte wählen sie eines der Farbschemen aus!');
    6.     dialog.oben.radio1 = dialog.oben.add ('radiobutton', [15,0,100,80],'Hell');
    7.     dialog.oben.radio1.value = true;
    8.     dialog.oben.radio2 = dialog.oben.add ('radiobutton', [107,0,200,80],'Dunkel');
    9.     dialog.unten = dialog.add('panel', [15,90,285,150],'Ausführen');
    10.     dialog.unten.ok = dialog.unten.add('button', [25,15,85,35],'Ok', {name:'ok'});
    11.     dialog.unten.cancel = dialog.unten.add('button', [100,15,200,35],'Abbrechen', {name:'cancel'});
    12.     ok = dialog.show() == 1;
    13.     if (dialog.oben.radio1.value) {
    14. farbe = new SolidColor
    15.     farbe.rgb.red = 255
    16.     farbe.rgb.green = 255
    17.     farbe.rgb.blue = 255
    18.     }
    19. else {
    20. farbe = new SolidColor
    21.     farbe.rgb.red = 0
    22.     farbe.rgb.green = 0
    23.     farbe.rgb.blue = 0
    24.     }
    25. };
    26.  
    27. schemadialog();
    28.  
    29. function generatetext() {
    30. var textebene = doc.artLayers.add();
    31.     textebene.kind = LayerKind.TEXT;
    32.     var textRef = textebene.textItem;
    33.     textebene.textItem.kind = TextType.POINTTEXT;
    34.     textebene.name = "EXIF";
    35.     textebene.textItem.contents = "Hallo Welt";
    36.     textebene.textItem.color = farbe
    37.     }
    38.  
    39. generatetext();
    Bei deinem zweiten Problem habe ich echte Zweifel, dass das funktionieren wird... zum einen folgt jedem "try" ein "catch" - dieser fehlt bei dir gänzlich...

    Desweiteren bin ich mir nicht mal sicher, ob "aux:Model" wirklich existiert - oder meintest du exif:Model ?

    Und hier stimmt bestimmt auch etwas nicht ganz, oder?

    Code (Text):
    1.   Kamera = xml.substr(ObjektivOff, xml.length - ObjektivOff);
     
    Zuletzt bearbeitet: 08.03.2014
    #10      
  11. TheLion6

    TheLion6 Rammsteinfan

    Dabei seit:
    18.11.2011
    Beiträge:
    57
    Geschlecht:
    männlich
    Ort:
    Essen
    Software:
    Cinema 4D R16 Student
    Kameratyp:
    Canon EOS 60D
    Bildhelligkeit über JavaScript
    Danke, ist mir auch schon aufgefallen ... Und ich komm schon wieder nicht weiter.

    Code (Text):
    1. function datenerfassung(){
    2.     var exifInfo = "";
    3.     try {
    4.         KameraOff = xml.indexOf("<tiff:Model>") + "<tiff:Model>".length;
    5.         if(KameraOff > 0) {
    6.             Kamera = xml.substr(KameraOff, xml.length - KameraOff);
    7.             Kamera = Kamera.substr(0,Kamera.indexOf("</tiff:Model>"));
    8.             }
    9.         }
    10.     catch(e){}
    11.     try {
    12.         xml = doc.xmpMetadata.rawData;
    13.         ObjektivOff = xml.indexOf("<exif:Lens>") + "<exif:Lens>".length;
    14.         if(ObjektivOff > 0) {
    15.             Objektiv = xml.substr(ObjektivOff, xml.length - ObjektivOff);
    16.             Objektiv = Objektiv.substr(0,Objektiv.indexOf("</exif:Lens>"));
    17.             }
    18.         }
    19.     catch(exception){}
    20. }
    Mir wird eine ordnungsgemäße Textebene an gewünschter Position in gewünschter Farbe geliefert, aber leider steht dadrin nur "mit EF 50mm f/1.8 II", trotz
    Code (Text):
    1. textebene.textItem.content = Kamera + " mit " + Objektiv
     
    #11      
  12. ph_o_e_n_ix

    ph_o_e_n_ix acromyniker

    Dabei seit:
    08.12.2013
    Beiträge:
    1.762
    Geschlecht:
    männlich
    Bildhelligkeit über JavaScript
    Ohne das komplette Skript zu kennen, kann man nur raten, wo der genaue Fehler liegt (und wenn ich mit meiner Vermutung richtig liege, dann gehst du gerade einen ohnehin unnötig komplizierten Weg...)
     
    #12      
  13. TheLion6

    TheLion6 Rammsteinfan

    Dabei seit:
    18.11.2011
    Beiträge:
    57
    Geschlecht:
    männlich
    Ort:
    Essen
    Software:
    Cinema 4D R16 Student
    Kameratyp:
    Canon EOS 60D
    Bildhelligkeit über JavaScript
    Was schlägst du denn vor?

    Code (Text):
    1. #target Photoshop
    2. app.bringToFront();
    3. try{
    4.     var doc = app.activeDocument;
    5. }
    6. catch(e){
    7.     alert = ("Kein Dokument gefunden", "Dokumentenfehler");
    8. }
    9. //Variablen für die Werte
    10. var Blende = "";
    11. var ISO = "";
    12. var Shutter = "";
    13. var Objektiv = "";
    14. var Kamera = "";
    15. //Variablen für Offset
    16. var BlendeOff = "";
    17. var ISOOff = "";
    18. var ShutterOff = "";
    19. var ObjektivOff = "";
    20. var KameraOff = "";
    21. //Variablen für den Text
    22. var font = "MyriadPro-LightIt";
    23. var größe = 16;
    24. var farbe = "";
    25.  
    26.  
    27. function datenerfassung(){
    28.     xml = doc.xmpMetadata.rawData;
    29.     var exifInfo = "";
    30.     try {
    31.         KameraOff = xml.indexOf("<tiff:Model>") + "<tiff:Model>".length;
    32.         if(KameraOff > 0) {
    33.             Kamera = xml.substr(KameraOff, xml.length - KameraOff);
    34.             Kamera = Kamera.substr(0,Kamera.indexOf("</tiff:Model>"));
    35.             }
    36.         }
    37.     catch(e){}
    38.     try {
    39.         ObjektivOff = xml.indexOf("<exif:Lens>") + "<exif:Lens>".length;
    40.         if(ObjektivOff > 0) {
    41.             Objektiv = xml.substr(ObjektivOff, xml.length - ObjektivOff);
    42.             Objektiv = Objektiv.substr(0,Objektiv.indexOf("</exif:Lens>"));
    43.             }
    44.         }
    45.     catch(exception){}
    46.     try {
    47.         ShutterOff = xml.indexOf("<exif:ExposureTime>") + "<exif:ExposureTime>".length;
    48.         if(ShutterOff > 0){
    49.             Shutter = xml.substr.(ShutterOff, xml.length - ShutterOff);
    50.             Shutter = Shutter.substr(0,Shutter.indexOf("</exif:ExposureTime>"));
    51.             }
    52.         }
    53.     catch(e){}
    54.     try {
    55.         BlendeOff = xml.indexOf("<exif:Fnumber>") + "<exif:Fnumber>".length;
    56.         if(BlendeOff> 0){
    57.             Blende = xml.substr.(BlendeOff, xml.length - BlendeOff);
    58.             Blende = Blende.substr(0,Blende.indexOf("</exif:Fnumber>"));
    59.             }
    60.         }
    61.     catch(e){}
    62.     }
    63. function schemadialog(){
    64.     var dialog = new Window ('dialog','Farbschema', [200,200,500,365]);
    65.     dialog.oben = dialog.add('panel',[15,10,285,80],'Bitte wählen sie eines der Farbschemen aus!');
    66.     dialog.oben.radio1 = dialog.oben.add ('radiobutton', [15,0,100,80],'Hell');
    67.     dialog.oben.radio1.value = true;
    68.     dialog.oben.radio2 = dialog.oben.add ('radiobutton', [107,0,200,80],'Dunkel');
    69.     dialog.unten = dialog.add('panel', [15,90,285,150],'Ausführen');
    70.     dialog.unten.ok = dialog.unten.add('button', [25,15,85,35],'Ok', {name:'ok'});
    71.     dialog.unten.cancel = dialog.unten.add('button', [100,15,200,35],'Abbrechen', {name:'cancel'});
    72.     ok = dialog.show() == 1;
    73.     if (dialog.oben.radio1.value) {
    74. farbe = new SolidColor
    75.     farbe.rgb.red = 255
    76.     farbe.rgb.green = 255
    77.     farbe.rgb.blue = 255
    78.     }
    79. else {
    80. farbe = new SolidColor
    81.     farbe.rgb.red = 0
    82.     farbe.rgb.green = 0
    83.     farbe.rgb.blue = 0
    84.     }
    85. };
    86. function generatetext() {
    87. var textebene = doc.artLayers.add();
    88.     textebene.kind = LayerKind.TEXT;
    89.     var textRef = textebene.textItem;
    90.     textebene.textItem.kind = TextType.POINTTEXT;
    91.     textebene.name = "EXIF";
    92.     textebene.textItem.contents = Kamera + " mit " + Objektiv;
    93.     textebene.textItem.color = farbe;
    94.     textebene.textItem.size = 35;
    95.     textebene.textItem.font = "MyriadPro-LightIt";
    96.     textebene.textItem.position =  [10,1187];
    97.     }
    98. datenerfassung();
    99. schemadialog();
    100. if(ok == 1) {
    101.     //generatetext();
    102.     alert (Blende, "Test")
    103. }
    generatetext(); hab ich ausgeklammert und durch alert ersetzt, um erst einmal testen zu können.
     
    #13      
  14. pixxxelschubser

    pixxxelschubser Realist

    Dabei seit:
    19.02.2008
    Beiträge:
    7.155
    Software:
    für jeden Zweck das Richtige
    Kameratyp:
    hab ich auch
    Bildhelligkeit über JavaScript
    Ganz einfach:
    Entferne zuerst die überflüssigen Punkte deiner substr
    Achte auf korrekte Groß-/Kleinschreibung deiner XML-Werte
    Und zum Schluss ergänze noch deine Funktionsaufrufe durch ordentliche Rückgabe der gefundenen Werte.

    Dann funktioniert auch alles wie gewünscht (Auch wenn dein Weg an sich ziemlich umständlich scheint).
    [​IMG]
     
    #14      
  15. ph_o_e_n_ix

    ph_o_e_n_ix acromyniker

    Dabei seit:
    08.12.2013
    Beiträge:
    1.762
    Geschlecht:
    männlich
    Bildhelligkeit über JavaScript
    Dein Skript scheint ja auf StampExif zu basieren - wieso nutzt du dann nicht einfach dessen Struktur und Funktionen, und passt es deinen Bedürfnissen an?

    Meiner Meinung nach wäre es viel einfacher gewesen, das Skript um die Teile zu erleichtern die nicht benötigt werden und dann die Funktionen hinzuzufügen, die du gerne zusätzlich hättest.

    Ansonsten kann ich mich nur Pixxxelschubsers Beitrag anschließen ... und noch anmerken, dass du unbedingt noch die Einheiten (unit) für Lineal (ruler) und Text (type) festlegen solltest.
     
    #15      
  16. TheLion6

    TheLion6 Rammsteinfan

    Dabei seit:
    18.11.2011
    Beiträge:
    57
    Geschlecht:
    männlich
    Ort:
    Essen
    Software:
    Cinema 4D R16 Student
    Kameratyp:
    Canon EOS 60D
    Bildhelligkeit über JavaScript
    Das mit dem Anpassen hab ich versucht, hat leider nicht so ganz geklappt ... Lineal ist sowieso immer auf pixel. Stell ich nie um.

    Darf ich Fragen, welches die überflüssigen Punkte sind? //edit: Gefunden
    Das try-catch-Schema hab ich komplett von StampExif übernommen ...

    Code (Text):
    1. #target Photoshop
    2. app.bringToFront();
    3. try{
    4.     var doc = app.activeDocument;
    5. }
    6. catch(e){
    7.     alert = ("Kein Dokument gefunden", "Dokumentenfehler");
    8. }
    9. //Variablen für die Werte
    10. var Blende = "";
    11. var ISO = "";
    12. var Shutter = "";
    13. var Objektiv = "";
    14. var Kamera = "";
    15. //Variablen für Offset
    16. var BlendeOff = "";
    17. var ISOOff = "";
    18. var ShutterOff = "";
    19. var ObjektivOff = "";
    20. var KameraOff = "";
    21. //Variablen für den Text
    22. var font = "MyriadPro-LightIt";
    23. var größe = 16;
    24. var farbe = "";
    25.  
    26. /*****************************
    27. *   DATENERFASSUNG    *
    28. ****************************/
    29.     xml = doc.xmpMetadata.rawData;
    30.     var exifInfo = "";
    31.     try {
    32.         KameraOff = xml.indexOf("<tiff:Model>") + "<tiff:Model>".length;
    33.         if(KameraOff > 0) {
    34.             Kamera = xml.substr(KameraOff, xml.length - KameraOff);
    35.             Kamera = Kamera.substr(0,Kamera.indexOf("</tiff:Model>"));
    36.             }
    37.         }
    38.     catch(e){}
    39.     try {
    40.         ObjektivOff = xml.indexOf("<exif:Lens>") + "<exif:Lens>".length;
    41.         if(ObjektivOff > 0) {
    42.             Objektiv = xml.substr(ObjektivOff, xml.length - ObjektivOff);
    43.             Objektiv = Objektiv.substr(0,Objektiv.indexOf("</exif:Lens>"));
    44.             }
    45.         }
    46.     catch(exception){}
    47.     try {
    48.         ShutterOff = xml.indexOf("<exif:ExposureTime>") + "<exif:ExposureTime>".length;
    49.         if(ShutterOff > 0){
    50.             Shutter = xml.substr(ShutterOff, xml.length - ShutterOff);
    51.             Shutter = Shutter.substr(0,Shutter.indexOf("</exif:ExposureTime>"));
    52.             }
    53.         }
    54.     catch(e){}
    55.     try {
    56.         BlendeOff = xml.indexOf("<exif:Fnumber>") + "<exif:Fnumber>".length;
    57.         if(BlendeOff> 0){
    58.             Blende = xml.substr(BlendeOff, xml.length - BlendeOff);
    59.             Blende = Blende.substr(0,Blende.indexOf("</exif:Fnumber>"));
    60.             }
    61.         }
    62.     catch(e){}
    63. /*function schemadialog(){
    64.     var dialog = new Window ('dialog','Farbschema', [200,200,500,365]);
    65.     dialog.oben = dialog.add('panel',[15,10,285,80],'Bitte wählen sie eines der Farbschemen aus!');
    66.     dialog.oben.radio1 = dialog.oben.add ('radiobutton', [15,0,100,80],'Hell');
    67.     dialog.oben.radio1.value = true;
    68.     dialog.oben.radio2 = dialog.oben.add ('radiobutton', [107,0,200,80],'Dunkel');
    69.     dialog.unten = dialog.add('panel', [15,90,285,150],'Ausführen');
    70.     dialog.unten.ok = dialog.unten.add('button', [25,15,85,35],'Ok', {name:'ok'});
    71.     dialog.unten.cancel = dialog.unten.add('button', [100,15,200,35],'Abbrechen', {name:'cancel'});
    72.     ok = dialog.show() == 1;
    73.     if (dialog.oben.radio1.value) {
    74. farbe = new SolidColor
    75.     farbe.rgb.red = 255
    76.     farbe.rgb.green = 255
    77.     farbe.rgb.blue = 255
    78.     }
    79. else {
    80. farbe = new SolidColor
    81.     farbe.rgb.red = 0
    82.     farbe.rgb.green = 0
    83.     farbe.rgb.blue = 0
    84.     }
    85. };
    86. function generatetext(Kamera, Objektiv, Blende, ISO, Shutter) {
    87. var textebene = doc.artLayers.add();
    88.     textebene.kind = LayerKind.TEXT;
    89.     var textRef = textebene.textItem;
    90.     textebene.textItem.kind = TextType.POINTTEXT;
    91.     textebene.name = "EXIF";
    92.     textebene.textItem.contents = Kamera + " mit " + Objektiv;
    93.     textebene.textItem.color = farbe;
    94.     textebene.textItem.size = 35;
    95.     textebene.textItem.font = "MyriadPro-LightIt";
    96.     textebene.textItem.position =  [10,1187];
    97.     }
    98. schemadialog();
    99. if(ok == 1) {
    100.     generatetext();
    101. }*/
    102. alert (Blende, "Test")
    Wo liegt jetzt der Fehler? Hab das mal temporär umgebaut, um den Fehler finden zu können.
     
    Zuletzt bearbeitet: 11.03.2014
    #16      
  17. ph_o_e_n_ix

    ph_o_e_n_ix acromyniker

    Dabei seit:
    08.12.2013
    Beiträge:
    1.762
    Geschlecht:
    männlich
    Bildhelligkeit über JavaScript
    Du selbst stellst die Einheiten vielleicht nicht um, es kann aber durchaus sein, dass z.B. beim verwenden eines anderen Skriptes dieses geschieht.

    Daher gehören solche Dinge bei jedem halbwegs ernsthaften Programmierer zum Grundgerüst.

    Ich interpretiere das jetzt einfach mal so, dass sich damit dein Problem gelöst hat...
    Das bedeutet ja aber nicht, dass man es nicht kürzen darf ... ;)
    Code (Text):
    1. [...]
    2.   try {
    3.   KameraOff = xml.indexOf("<tiff:Model>") + "<tiff:Model>".length;
    4.   if(KameraOff > 0) {
    5.   Kamera = xml.substr(KameraOff, xml.length - KameraOff);
    6.   Kamera = Kamera.substr(0,Kamera.indexOf("</tiff:Model>"));
    7.   }
    8.   {
    9.   ObjektivOff = xml.indexOf("<exif:Lens>") + "<exif:Lens>".length;
    10.   if(ObjektivOff > 0) {
    11.   Objektiv = xml.substr(ObjektivOff, xml.length - ObjektivOff);
    12.   Objektiv = Objektiv.substr(0,Objektiv.indexOf("</exif:Lens>"));
    13.   }
    14.   {
    15.   ShutterOff = xml.indexOf("<exif:ExposureTime>") + "<exif:ExposureTime>".length;
    16.   if(ShutterOff > 0){
    17.   Shutter = xml.substr(ShutterOff, xml.length - ShutterOff);
    18.   Shutter = Shutter.substr(0,Shutter.indexOf("</exif:ExposureTime>"));
    19.   }
    20.   {
    21.   BlendeOff = xml.indexOf("<exif:Fnumber>") + "<exif:Fnumber>".length;
    22.   if(BlendeOff> 0){
    23.   Blende = xml.substr(BlendeOff, xml.length - BlendeOff);
    24.   Blende = Blende.substr(0,Blende.indexOf("</exif:Fnumber>"));
    25.   }}}}}
    26.   catch(e){}
    27. [...]
    28.  
    Das ließe sich zwar noch eine ganze Ecke weiter verkürzen, allerdings sollte das aktuell nicht dein primäres Problem sein - das kannst du hinterher immer noch tun...
     
    #17      
  18. pixxxelschubser

    pixxxelschubser Realist

    Dabei seit:
    19.02.2008
    Beiträge:
    7.155
    Software:
    für jeden Zweck das Richtige
    Kameratyp:
    hab ich auch
    Bildhelligkeit über JavaScript
    Die Antwort darauf hast du bereits bekommen. Ich zitiere mich einfach selbst:

    Lies dich bitte in die Arbeitsweise einer function() {} ein. Die innerhalb einer function ermittelten Werte werden nicht automatisch an den Hauptteil des Skriptes zurückübergeben.

    (Und da du ja selbst lernen möchtest, gibt es auch nur noch einen Schubser in die richtige Richtung.)
    ;)
     
    #18      
  19. TheLion6

    TheLion6 Rammsteinfan

    Dabei seit:
    18.11.2011
    Beiträge:
    57
    Geschlecht:
    männlich
    Ort:
    Essen
    Software:
    Cinema 4D R16 Student
    Kameratyp:
    Canon EOS 60D
    Bildhelligkeit über JavaScript
    Jetzt habe ich ja sogar die Funktion ausgebaut, aber klappen tut es trotzdem nicht.
     
    #19      
  20. pixxxelschubser

    pixxxelschubser Realist

    Dabei seit:
    19.02.2008
    Beiträge:
    7.155
    Software:
    für jeden Zweck das Richtige
    Kameratyp:
    hab ich auch
    Bildhelligkeit über JavaScript
    Ich bin mir nicht ganz sicher, ob es witzig oder eher traurig ist.

    Woher in aller Welt soll irgendwer, der nicht mit hellseherischen Fähigkeiten ausgestattet ist, wissen, an welcher Stelle deiner „ausgebauten Funktion“ der Fehler steckt??? Wie dir bereits mehrfach gesagt wurde: Zeige sie doch einfach!
    :rolleyes:

    Aber meine Kristallkugel hat mir gerade geflüstert, dass der Fehler immer noch in deiner halbfertigen Funktion zu suchen ist. Vergleichbar am ehesten mit einer try - catch - clause, in der man das catch „vergessen hat“.
     
    #20      
x
×
×