Javascript/DOM - individuellen Farbcode von Strings erstellen
Karsten Mehlen
- javascript
Hallo,
klingt etwas komisch, aber ich bin auf der Suche nach einer Moeglichkeit, Strings (max. Laenge etwa 60-70 Zeichen) in einen Farbcode umzuwandeln, so dass moeglichst fuer einen String eine eindeutige Farbe mit der ich den Hintergrund des Strings einfaerben kann.
Ich hatte dabei daran gedacht, den String zuerst in eine Zahl umzuwandeln, und dann aus dieser einen Farbcode zu ermitteln. Die Farbunterschiede sollten aber zwischen aehnlichen Strings erkennbar sein (etwa 'aa' und 'aab') . Kennt jemand eventuell einen Weg, der hierfur elegant ist. Ich hatte jetzt an so etwas gedacht:
var aString = 'testwert fuer string';
var colorNr = aString.length;
for(var i=0;i<aString.length;i++){
colorNr += parseInt(aString.charCodeAt(i));
colorNr = colorNr * i;
}
Gruss, Karsten
Hi,
klingt etwas komisch, aber ich bin auf der Suche nach einer Moeglichkeit, Strings (max. Laenge etwa 60-70 Zeichen) in einen Farbcode umzuwandeln, so dass moeglichst fuer einen String eine eindeutige Farbe mit der ich den Hintergrund des Strings einfaerben kann.
Also suchst du eine Art von Hash-Alogrithmus.
Ich hatte dabei daran gedacht, den String zuerst in eine Zahl umzuwandeln, und dann aus dieser einen Farbcode zu ermitteln. Die Farbunterschiede sollten aber zwischen aehnlichen Strings erkennbar sein (etwa 'aa' und 'aab') .
Das kann eigentlich nur bei einem sehr begrenzten Vorrat an Strings überhaupt funktionieren.
Selbst wenn sich im Web 16kommairgendwas Millionen Farben darstellen lassen - für das menschliche Auge unterscheidbar sind (natürlich) längst nicht so viele. Nicht nur „nicht so viele“, sondern in Relation sogar eher „extrem wenige“. (Natürlich kommt es noch auf Umgebungsbedingungen an - Helligkeit, Kontrast, Qualität des darstellenden Mediums, etc. pp.)
Kennt jemand eventuell einen Weg, der hierfur elegant ist.
Ohne genauere Vorgaben und vor allem Beschränkungen der Eingabedaten ist das m.E. kaum sinnvoll realisierbar.
MfG ChrisB
Hallo,
ich bin auf der Suche nach einer Moeglichkeit, Strings (max. Laenge etwa 60-70 Zeichen) in einen Farbcode umzuwandeln, so dass moeglichst fuer einen String eine eindeutige Farbe mit der ich den Hintergrund des Strings einfaerben kann.
Mit einem Alphabet von 26 Buchstaben und 70 Zeichen gibt es 1.117e+99 denkbare Strings, wahrscheinlich mehr als das Universum Atome hat, und natürlich auch weit mehr, als es darstellbare Farben gibt.
Mit "eindeutig" wird das also nichts.
Gruß, Don P
@@Don P:
nuqneH
Mit einem Alphabet von 26 Buchstaben und 70 Zeichen gibt es 1.117e+99 denkbare Strings,
Mit einem Alphabet von 26 Buchstaben und _max._ 70 Zeichen gibt es 1.162e+99 denkbare Strings.
Qapla'
Hallo,
Mit einem Alphabet von 26 Buchstaben und 70 Zeichen gibt es 1.117e+99 denkbare Strings,
Mit einem Alphabet von 26 Buchstaben und _max._ 70 Zeichen gibt es 1.162e+99 denkbare Strings.
Wusste gar nicht, dass Klingonen außer kämpfen, töten, sterben und fluchen auch noch rechnen können ;)
Wieviele Strings sind es dann mit 60-70 Zeichen?
Egal - es sind einfach viel zu viele, eine 100stellige Anzahl immerhin, verglichen mit einer lächerlichen 8stelligen Anzahl darstellbarer Farben, von denen wiederum nur lächerlich wenige vom menschl. Auge unterschieden werden können.
Gruß, Don P
@@Don P:
nuqneH
Mit einem Alphabet von 26 Buchstaben und _max._ 70 Zeichen gibt es 1.162e+99 denkbare Strings.
Wieviele Strings sind es dann mit 60-70 Zeichen?
Ebensoviele. ;-) Die Abweichung liegt in den weggerundeten Stellen.
Zum Nachrechnen: [latex]\sum_{i=60}^{70} 26^i[/latex]
for (var i = 60, s = 0; i <= 70; s += Math.pow(26, i++));
alert(s);
Qapla'