Hallo Heinz,
Heinz Mendax hat geschrieben:Die 6 Werte pro die 16 Mio Farben werden zu Rechnungen im Lab-Farbraum benötigt. Natürlich könnte man diese
auch während der Laufzeit berechnen.
Ich würde das nicht mit DataSection machen und auch nicht mit einer externen Datei, die mit dem Programm mitgeliefert wird.
Wenn Du das Programm mit einem Setup auslieferst, wird nur das Setup unnötig aufgeblasen.
Ich würde da eher den Weg gehen, die Daten beim ersten Start des Rechners zu berechnen und dann als Datei speichern.
Diese kann dann bei jedem weiteren Start geladen und verwendet werden (das Laden wird wohl schneller gehen als das Berechnen aller Werte).
Ich weiß zwar nicht, welche Werte Du für Deine Tabelle brauchst, ich habe aber mal ein Beispiel geschrieben, das bei mir ca. 10 Sekunden braucht um alle Werte zu berechnen. Welche Werte (bzw. Berechnungen) Du für Deine Anwendung brauchst, weißt natürlich nur Du. Hier also mein Beispiel:
Code: Alles auswählen
EnableExplicit
Structure tRGBinfo
X.f
Y.f
Z.f
L.f
a.f
b.f
EndStructure
Define tStart = ElapsedMilliseconds()
Global Dim aRGBinfo.tRGBinfo(255,255,255)
Define R, G, B
Define.f Xn = 96.422
Define.f Yn = 100
Define.f Zn = 82.521
For R = 0 To 255
For G = 0 To 255
For B = 0 To 255
With aRGBinfo(R,G,B)
\X = 0.4124564 * R + 0.3575761 * G + 0.1804375 * B
\Y = 0.2126729 * R + 0.7151522 * G + 0.0721750 * B
\Z = 0.0193339 * R + 0.1191920 * G + 0.9503041 * B
\L = 116 * Pow(\Y / Yn, 3) - 16
\a = 500 * ( Pow(\X / Xn, 3) - Pow(\Y / Yn, 3) )
\b = 200 * ( Pow(\Y / Yn, 3) - Pow(\Z / Zn, 3) )
EndWith
Next B
Next G
Next R
Define tEnd = ElapsedMilliseconds()
MessageRequester("","Time [ms]: " + Str(tEnd - tStart) )
Ob ein Array mit einer Struktur für Dich die optimalste Lösung ist, kann ich nicht sagen.
Das hängt davon ab, was Du alles mit den Werten machen möchtest.
Das Array braucht im Speicher ca. 400 MByte!
LG,
guido