Padanan Warna Terhampir dalam Tatasusunan
Memandangkan susunan warna dan objek Warna yang berasingan, tugasnya adalah untuk menentukan padanan terdekat dalam tatasusunan kepada warna yang diberikan. Jarak warna ialah konsep subjektif, dan terdapat pelbagai cara untuk mengukurnya.
Kaedah Warna Sahaja
Kaedah ini memberi tumpuan semata-mata pada rona warna, mengabaikan ketepuan dan kecerahan. Ia mengira perbezaan mutlak antara warna warna calon dan warna yang diberikan. Warna calon dengan perbezaan rona terkecil dipilih.
int closestColor1(List<Color> colors, Color target) { var hue1 = target.GetHue(); var diffs = colors.Select(n => getHueDistance(n.GetHue(), hue1)); var diffMin = diffs.Min(n => n); return diffs.ToList().FindIndex(n => n == diffMin); }
Kaedah Ruang RGB
Kaedah ini mengukur jarak terus antara warna dalam ruang RGB. Ia mengira jarak Euclidean antara komponen R, G, dan B bagi warna calon dan warna yang diberikan. Warna calon dengan jarak terkecil dipilih.
int closestColor2(List<Color> colors, Color target) { var colorDiffs = colors.Select(n => ColorDiff(n, target)).Min(n => n); return colors.FindIndex(n => ColorDiff(n, target) == colorDiffs); }
Kaedah Wajaran
Kaedah ini memberikan pemberat kepada komponen warna, ketepuan dan kecerahan warna. Ia mengira jarak berwajaran dengan menggabungkan perbezaan rona dengan gabungan berwajaran ketepuan dan kecerahan. Warna calon dengan jarak wajaran terkecil dipilih.
int closestColor3(List<Color> colors, Color target) { float hue1 = target.GetHue(); var num1 = ColorNum(target); var diffs = colors.Select(n => Math.Abs(ColorNum(n) - num1) + getHueDistance(n.GetHue(), hue1)); var diffMin = diffs.Min(x => x); return diffs.ToList().FindIndex(n => n == diffMin); }
Berdasarkan keperluan anda, anda boleh memilih kaedah yang paling sesuai dengan permohonan anda.
Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Cari Padanan Warna Terhampir dalam Susunan Warna?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!