Saya mencari algoritma sederhana untuk menghasilkan sejumlah besar warna acak yang menyenangkan secara estetika. Jadi tidak ada warna neon gila, warna yang mengingatkan pada feses, dll.
Saya telah menemukan solusi untuk masalah ini tetapi mereka bergantung pada palet warna alternatif daripada RGB. Saya lebih suka menggunakan RGB langsung daripada memetakan bolak-balik. Solusi lain ini juga paling banyak hanya dapat menghasilkan 32 atau lebih warna acak yang menyenangkan.
Ide apa pun akan bagus.
Jawaban:
Anda dapat meratakan nilai RGB warna acak dengan nilai warna konstan:
(contoh di Jawa)
Mencampur warna acak dengan putih (255, 255, 255) menciptakan pastel netral dengan meningkatkan kecerahan sambil menjaga rona warna asli. Pastel yang dihasilkan secara acak ini biasanya cocok satu sama lain, terutama dalam jumlah besar.
Berikut adalah beberapa warna pastel yang dihasilkan menggunakan metode di atas:
Anda juga bisa mencampur warna acak dengan pastel konstan, yang menghasilkan serangkaian warna netral. Misalnya, menggunakan biru muda menghasilkan warna seperti ini:
Lebih jauh, Anda bisa menambahkan heuristik ke generator Anda yang memperhitungkan warna komplementer atau tingkat naungan, tetapi semuanya tergantung pada kesan yang ingin Anda capai dengan warna acak Anda.
Beberapa sumber tambahan:
sumber
Saya akan menggunakan roda warna dan diberi posisi acak Anda bisa menambahkan sudut emas (137,5 derajat)
http://en.wikipedia.org/wiki/Golden_angle
untuk mendapatkan warna yang berbeda setiap kali tidak tumpang tindih.
Menyesuaikan kecerahan untuk roda warna Anda bisa mendapatkan kombinasi warna cerah / gelap yang berbeda.
Saya telah menemukan posting blog ini yang menjelaskan dengan sangat baik masalah dan solusi menggunakan rasio emas.
http://martin.ankerl.com/2009/12/09/how-to-create-random-colors-programmatically/
UPDATE: Saya baru saja menemukan pendekatan lain ini:
Ini disebut metode RYB (merah, kuning, biru) dan dijelaskan dalam makalah ini:
http://threekings.tk/mirror/ryb_TR.pdf
sebagai "Pengomposisi Warna Terinspirasi Cat".
Algoritma menghasilkan warna dan setiap warna baru dipilih untuk memaksimalkan jarak euclidian ke yang sebelumnya dipilih.
Di sini Anda dapat menemukan implementasi yang baik dalam javascript:
http://afriggeri.github.com/RYB/
PEMBARUAN 2:
The Sciences Po Medialb baru saja merilis alat yang disebut "I want Hue" yang menghasilkan palet warna untuk ilmuwan data. Menggunakan ruang warna yang berbeda dan menghasilkan palet dengan menggunakan k-means clustering atau vektor gaya (grafik tolakan). Hasil dari metode tersebut sangat baik, mereka menunjukkan teori dan implementasi di halaman web mereka.
http://tools.medialab.sciences-po.fr/iwanthue/index.php
sumber
Dalam javascript:
Lihat idenya di sini: http://blog.functionalfun.net/2008/07/random-pastel-colour-generator.html
sumber
Mengubah ke palet lain adalah cara yang jauh lebih unggul untuk melakukan ini. Ada alasan mereka melakukan itu: palet lain adalah 'perseptual' - yaitu, mereka menempatkan warna yang serupa berdekatan, dan menyesuaikan satu variabel mengubah warna dengan cara yang dapat diprediksi. Tidak ada yang benar untuk RGB, di mana tidak ada hubungan yang jelas antara warna yang "cocok bersama".
sumber
Saya sudah sukses menggunakan TriadMixing dan CIE94 untuk menghindari warna serupa. Gambar berikut menggunakan warna input merah, kuning, dan putih. Lihat di sini .
sumber
Sebuah jawaban yang tidak boleh diabaikan, karena sederhana dan memberikan keuntungan, adalah pengambilan sampel foto dan lukisan kehidupan nyata. sampel sebanyak piksel acak yang Anda inginkan warna acak pada thumbnail gambar seni modern, cezanne, van gogh, monnet, foto ... keuntungannya adalah Anda bisa mendapatkan warna berdasarkan tema dan itu adalah warna organik. cukup masukkan 20 - 30 foto di folder dan sampel acak foto acak setiap kali.
Konversi ke nilai HSV adalah algoritma kode luas untuk palet berbasis psikologis. hsv lebih mudah untuk diacak.
sumber
Dalam php:
sumber: https://stackoverflow.com/a/12266311/2875783
sumber
Berikut ini adalah penghasil warna yang cepat dan kotor di C # (menggunakan 'pendekatan RYB' yang dijelaskan dalam artikel ini ). Ini adalah penulisan ulang dari JavaScript .
Menggunakan:
Dua warna pertama cenderung berwarna putih dan hitam. Saya sering melewati mereka seperti ini (menggunakan Linq):
Penerapan:
sumber
Metode David Crow dalam R two-liner:
sumber
Untuk pastel, masukkan bilangan bulat gelap / terang luma yang lebih tinggi - yaitu fnGetRandomColour (120, 250)
Kredit: semua kredit ke http://paulirish.com/2009/random-hex-color-code-snippets/ stackoverflow.com/questions/12043187/how-to-check-if-hex-color-is-too-black
sumber
Adaptasi JavaScript atas jawaban asli David Crow, termasuk kode spesifik IE dan Nodejs.
Jalankan fungsi menggunakan:
sumber
Gunakan warna berbeda .
Ditulis dalam javascript.
Ini menghasilkan palet warna yang berbeda secara visual .
warna-berbeda sangat dapat dikonfigurasi:
sumber
Anda bisa memilikinya dalam kecerahan tertentu. yang akan mengontrol jumlah warna "neon" sedikit. misalnya, jika "kecerahan"
berada dalam batas tinggi tertentu, itu akan memiliki warna terang yang luntur. Sebaliknya, jika berada dalam batas bawah tertentu, itu akan menjadi lebih gelap. Ini akan menghilangkan warna-warna gila dan menonjol dan jika Anda memilih batas yang benar-benar tinggi atau sangat rendah, semuanya akan mendekati warna putih atau hitam.
sumber
Akan sulit untuk mendapatkan apa yang Anda inginkan secara algoritmik - orang telah mempelajari teori warna sejak lama, dan mereka bahkan tidak tahu semua aturannya.
Namun, ada beberapa aturan yang dapat Anda gunakan untuk menyisihkan kombinasi warna yang buruk (yaitu, ada aturan untuk bentrok warna, dan memilih warna komplementer).
Saya sarankan Anda mengunjungi bagian seni perpustakaan Anda dan memeriksa buku-buku tentang teori warna untuk mendapatkan pemahaman yang lebih baik tentang warna apa yang baik sebelum Anda mencoba membuatnya - sepertinya Anda bahkan tidak tahu mengapa kombinasi tertentu bekerja dan yang lain tidak. t.
-Adam
sumber
Saya sangat merekomendasikan menggunakan fungsi CG HSVtoRGB shader, mereka luar biasa ... itu memberi Anda kontrol warna alami seperti seorang pelukis, bukan kontrol seperti monitor crt, yang mungkin bukan Anda!
Ini adalah cara untuk membuat 1 nilai float. yaitu abu-abu, menjadi 1000 ds kombinasi warna dan kecerahan dan saturasi dll:
hasilnya adalah RANDOMISASI WARNA MENGAGUMKAN! itu tidak alami tetapi menggunakan gradien warna alami dan terlihat organik dan dapat diatur parameter irridescent / pastel.
Untuk perlin, Anda dapat menggunakan fungsi ini, ini adalah versi cepat zig zag dari perlin.
sumber
Ini adalah sesuatu yang saya tulis untuk situs yang saya buat. Ini akan secara otomatis menghasilkan warna latar belakang datar acak untuk setiap div dengan kelas
.flat-color-gen
. Jquery hanya diperlukan untuk tujuan menambahkan css ke halaman; itu tidak diperlukan untuk bagian utama ini, yaitugenerateFlatColorWithOrder()
metode.JsFiddle Link
sumber