Rumah  >  Artikel  >  Java  >  Bagaimanakah Saya Boleh Menjana Set Besar Warna-warna Berbeza Secara Visual?

Bagaimanakah Saya Boleh Menjana Set Besar Warna-warna Berbeza Secara Visual?

Susan Sarandon
Susan Sarandonasal
2024-10-31 12:04:31529semak imbas

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

Menjana Warna Berbeza Secara Automatik

Apabila menjana sejumlah besar warna, mencari cara untuk memastikan ia berbeza secara visual boleh menjadi mencabar. Meneroka pendekatan sedia ada adalah penting.

Pecah Seragam Kiub RGB:

Kaedah ini membahagikan kiub RGB kepada bahagian diskret dan memilih warna daripada kawasan tersebut. Ia boleh menghasilkan skala progresif, tetapi untuk jumlah yang besar, warna mungkin kelihatan serupa.

Menggunakan Senarai Pratakrif:

Senarai warna seperti Boynton atau Kelly menyediakan warna yang telah dipilih dengan kontras yang tinggi, menghapuskan keperluan untuk algoritma.

Kaedah Berasaskan Algoritma:

Pelbagai algoritma telah dibangunkan untuk memilih warna yang berbeza. Ini termasuk:

  • Paparan warna untuk imej kategori: Menyediakan palet 11 warna yang boleh dibezakan kepada penonton dengan kekurangan penglihatan warna.
  • PERKHIDMATAN WEB UNTUK MEMPERIBADI MEWARNA PETA: Menawarkan perkhidmatan web untuk menjana set warna tersuai.
  • Algoritma untuk Pemilihan Set Warna Kontras Tinggi: Mencadangkan algoritma untuk mencari warna kontras.
  • Set warna kontras tinggi: Memperkenalkan algoritma pertama untuk masalah ini.

Menukar kepada RGB:

Jika warna tidak dinyatakan dalam format RGB, anda mungkin perlu menukarnya menggunakan sumber seperti:

  • http://chem8.org/uch/space-55036-do-blog-id- 5333.html
  • https://metacpan.org/pod/Color::Library::Dictionary::NBS_ISCC
  • Teori Warna: Cara menukar Munsell HVC kepada RGB/HSB/HSL

Contoh Kod:

Kod C# untuk senarai dioptimumkan Boynton:

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
};

Kod JavaFX untuk warna Kelly:

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
};

Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Menjana Set Besar Warna-warna Berbeza Secara Visual?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn