Heim  >  Artikel  >  Java  >  Wie kann ich einen großen Satz visuell unterschiedlicher Farben erzeugen?

Wie kann ich einen großen Satz visuell unterschiedlicher Farben erzeugen?

Susan Sarandon
Susan SarandonOriginal
2024-10-31 12:04:31531Durchsuche

How Can I Generate a Large Set of Visually Distinct Colors?

Automatisches Generieren unterschiedlicher Farben

Beim Generieren einer großen Anzahl von Farben kann es eine Herausforderung sein, Mittel zu finden, um sicherzustellen, dass sie sich optisch unterscheiden. Es ist wichtig, bestehende Ansätze zu erkunden.

Gleichmäßige Unterteilung des RGB-Würfels:

Diese Methode unterteilt den RGB-Würfel in diskrete Abschnitte und wählt Farben aus diesen Bereichen aus. Es kann eine progressive Skala erzeugt werden, aber bei großen Zahlen können Farben ähnlich erscheinen.

Verwendung vordefinierter Listen:

Farblisten wie Boynton's oder Kelly's stellen vorab ausgewählte Farben bereit hoher Kontrast, sodass keine Algorithmen erforderlich sind.

Algorithmenbasierte Methoden:

Verschiedene Algorithmen wurden entwickelt, um unterschiedliche Farben auszuwählen. Dazu gehören:

  • Farbanzeigen für kategoriale Bilder: Bietet eine Palette von 11 Farben, die für Betrachter mit Farbsehbehinderungen unterscheidbar sind.
  • EIN WEBSERVICE UM DIE KARTENFARBE ZU PERSONALISIEREN: Bietet einen Webdienst zum Generieren benutzerdefinierter Farbsätze.
  • Ein Algorithmus für die Auswahl kontrastreicher Farbsätze: Schlägt einen Algorithmus zum Finden kontrastierender Farben vor.
  • Kontrastreiche Farbsätze: Stellt den ersten Algorithmus für dieses Problem vor.

Konvertierung in RGB:

Wenn Farben nicht im RGB-Format angegeben sind, müssen Sie sie möglicherweise mit Ressourcen wie den folgenden konvertieren:

  • http://chem8.org/uch/space-55036-do-blog-id- 5333.html
  • https://metacpan.org/pod/Color::Library::Dictionary::NBS_ISCC
  • Farbtheorie: So konvertieren Sie Munsell HVC in RGB/HSB/HSL

Codebeispiele:

C#-Code für Boyntons optimierte Liste:

public static readonly List<Color> _boyntonOptimized = new List<Color>
{
    Color.FromArgb(0, 0, 255),      //Blue
    Color.FromArgb(255, 0, 0),      //Red
    Color.FromArgb(0, 255, 0),      //Green
    Color.FromArgb(255, 255, 0),    //Yellow
    Color.FromArgb(255, 0, 255),    //Magenta
    Color.FromArgb(255, 128, 128),  //Pink
    Color.FromArgb(128, 128, 128),  //Gray
    Color.FromArgb(128, 0, 0),      //Brown
    Color.FromArgb(255, 128, 0),    //Orange
};

JavaFX-Code für Kellys Farben:

private static final Color[] KELLY_COLORS = {
    Color.web("0xFFB300"),    // Vivid Yellow
    Color.web("0x803E75"),    // Strong Purple
    Color.web("0xFF6800"),    // Vivid Orange
    Color.web("0xA6BDD7"),    // Very Light Blue
    Color.web("0xC10020"),    // Vivid Red
    Color.web("0xCEA262"),    // Grayish Yellow
    Color.web("0x817066"),    // Medium Gray

    Color.web("0x007D34"),    // Vivid Green
    Color.web("0xF6768E"),    // Strong Purplish Pink
    Color.web("0x00538A"),    // Strong Blue
    Color.web("0xFF7A5C"),    // Strong Yellowish Pink
    Color.web("0x53377A"),    // Strong Violet
    Color.web("0xFF8E00"),    // Vivid Orange Yellow
    Color.web("0xB32851"),    // Strong Purplish Red
    Color.web("0xF4C800"),    // Vivid Greenish Yellow
    Color.web("0x7F180D"),    // Strong Reddish Brown
    Color.web("0x93AA00"),    // Vivid Yellowish Green
    Color.web("0x593315"),    // Deep Yellowish Brown
    Color.web("0xF13A13"),    // Vivid Reddish Orange
    Color.web("0x232C16"),    // Dark Olive Green
};

Das obige ist der detaillierte Inhalt vonWie kann ich einen großen Satz visuell unterschiedlicher Farben erzeugen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn