hilfdirselbst.ch
Facebook Twitter gamper-media
Kai Rübsamen  M  p
Beiträge: 4520
15. Nov 2013, 09:29
Beitrag #1 von 6
Bewertung:
(1599 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen

CMYK-Farbwerte vergleichen


Hallo!

Ich habe mehrere Bezeichnungen für die gleiche Farbe im Dokument. Diese möchte ich a) vereinheitlichen und b) der Farbe mit entsprechendem Wert nachher noch einen andere Farbe zuweisen.

Im Skriptarcharchiv gibt es bereits ein Skript von Stephan Möbius. Stephan geht den gleichen Weg wie ich und prüft jeden der 4 Farbwerte bei CMYK einzeln, also z.B. so:

Code
if ( curSwatch.colorValue[0] == 0 && curSwatch.colorValue[1] == 60  && curSwatch.colorValue[2] == 100 && curSwatch.colorValue[3] == 0 ) { 
curSwatch.remove(first)
}


Bei Stephan ist es jedoch so, dass er im Skript eine Toleranz von 1% pro Wert zulässt. Daher ist auch die einzelne Prüfung sinnvoll.

In meinem Fall soll es aber keine Toleranzen geben. Prüfe ich nur mit curSwatch.colorValue == compareSwatch.colorValue scheint das nicht zu funktionieren?!

Frage
Mache ich etwas falsch oder geht es nur über den umständlichen Weg, jedesmal alle 4 Werte prüfen zu müssen? Danke.
Gruß Kai Rübsamen
_______________________
(Dieser Beitrag wurde von Kai Rübsamen am 15. Nov 2013, 09:31 geändert)
Top
 
X
gfellenz
Beiträge: 111
15. Nov 2013, 10:12
Beitrag #2 von 6
Beitrag ID: #519760
Bewertung:
(1567 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen

CMYK-Farbwerte vergleichen


Hallo Kai,

in der Eigenschaft colorValue befindet sich ein Array den du nicht einfach mit gem Operator == prüfen kannst.

Sauber wäre eine eigene Funktion zum vergleichen von Arrays wie z.B. hier beschrieben:

http://stackoverflow.com/...arrays-in-javascript

In deinem Fall kommst du aber auch mit einem einfachen String-Vergleich hin:
Code
curSwatch.colorValue.toString() == compareSwatch.colorValue.toString() 


Das funktioniert aber nur weil du ganz genau wissen kannst, dass in den Arrays keine verschachtelten Arrays sind. Und es dir vermutlich nicht auf die allerletzte Geschwindigkeitsoptimierung ankommt.

Schöner ist die Variante mit eigener Funktion (egal ob Prototype oder nicht). Außerdem muss du ggf. noch den Farbraum prüfen, da sonst ggf. RGB und LAB farben fälschlicherweise falsch sind.
--
Grüße aus Köln,
Gregor Fellenz
http://www.indesignblog.com
als Antwort auf: [#519755] Top
 
WernerPerplies
Beiträge: 2199
15. Nov 2013, 10:29
Beitrag #3 von 6
Beitrag ID: #519764
Bewertung:
(1551 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen

CMYK-Farbwerte vergleichen


Hallo Gregor,

eine universelle Lösung könnte dies sein:
WpsCompareObjects
Mein Objektvergleich zeigt alle Unterschiede zweier Objekte.

Einen schönen Tag wünscht

Werner Perplies
Auftragsprogrammierung und Skripte für Adobe InDesign
neu: WpsProjectHandler 15.06.2018, Version 1.75, neue Funktionen
Aktuelles
XING
als Antwort auf: [#519760] Top
 
Kai Rübsamen  M  p
Beiträge: 4520
15. Nov 2013, 10:43
Beitrag #4 von 6
Beitrag ID: #519766
Bewertung:
(1531 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen

CMYK-Farbwerte vergleichen


Hallo Gregor,

sehr gut! Danke :)

Leider zwei ergänzende Fragen:
1. Wird eine Farbe z.B. [0, 60, 100, 0] dupliziert, so hat das Duplikat immer noch den gleichen Farbwert, wird aber im Namen als C=0 M=60 Y=100 K=0 2 angegeben. Ich hätte vermutet, dass der Name hier nicht relevant ist, da ich ja den Wert prüfe. Dieses Duplikat wird mir jedoch nicht ersetzt, weil?

2. kann ich die toString-Methode auch einsetzen, wenn ich wissen möchte, ob die Farbe genau den Wert [0, 75, 100, 25] hat? Falls ja, wie müsste ich das notieren?
Gruß Kai Rübsamen
_______________________
als Antwort auf: [#519760] Top
 
gfellenz
Beiträge: 111
15. Nov 2013, 10:51
Beitrag #5 von 6
Beitrag ID: #519767
Bewertung:
(1517 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen

CMYK-Farbwerte vergleichen


Ehrlich gesagt keine Ahnung müsste man dein vollständiges Skript prüfen. Das folgende Schnippsel dupliziert dir eine Farbe und da funktioniert das wie erwartet. Hier siehst du auch wie du die Farbwerte angeben musst (Ausgabe in der JavaScript Console des ETSK)

Code
var color1 = app.activeDocument.colors[0]; 
$.writeln("Angabe des Farbstrings: \"" + color1.colorValue.toString() + "\"");
var color2 = color1.duplicate();
alert (color1.colorValue.toString() == color2.colorValue.toString())

--
Grüße aus Köln,
Gregor Fellenz
http://www.indesignblog.com
als Antwort auf: [#519766] Top
 
Kai Rübsamen  M  p
Beiträge: 4520
15. Nov 2013, 12:16
Beitrag #6 von 6
Beitrag ID: #519773
Bewertung:
(1471 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen

CMYK-Farbwerte vergleichen


Hm, bei dir passts, das mit der Konsole funktioniert auch. Danke.
Gruß Kai Rübsamen
_______________________
als Antwort auf: [#519767] Top
 
X