如何在MySQL中随机选择HEX颜色但避免使用特定的颜色范围?

问题描述 投票:1回答:1

THE BACKGROUND

我正在使用MySQL数据库来存储我在网站上的数据可视化中检索的数据。在我的可视化中,约800个项目中的两个是主要关注点,并且将在条形图内分配特定的颜色代码(深色和浅橙色)。过滤器用于可视化,因此每次可以看到一组不同的项目,但是两个主要项目应始终伸出(如果在过滤器之后存在)。

DESIRED SOLUTION

我想要实现这两个目标

  • 彩色条形图
  • 通过避免图表中的相似颜色,轻松直观地识别两个主要项目

MY CURRENT SOLUTIONS

一种方法可能是创建一组随机的十六进制颜色,手动(或半自动)更改具有与两个主要项目相似的颜色代码的项目的所有颜色,并将其存储为要检索的列表。而就目前而言,这将是我的策略......

但我真的希望有一种自动方式,只能创建随机的十六进制代码,但避免使用特定的颜色范围(在我的情况下,一切都是橙色)。

我已经知道如何随机创建十六进制代码:

concat('#',SUBSTRING((lpad(hex(round(rand() * 10000000)),6,0))

现在下一步将是避免橙色配色方案。

MY QUESTION

关于如何在SELECT声明中实现这一点的任何想法?

SELECT
   item,
   concat('#',SUBSTRING((lpad(hex(round(rand() * 10000000)),6,0)) as color --THIS SHOULD CHANGE
   FROM item_list
mysql random colors
1个回答
0
投票

这是一个更多的JavaScript解决方案,但它为字符串生成相同的颜色,而不是每次随机。

// this requires tiny color // https://github.com/bgrins/TinyColor
let 
    MD5=function(a){function b(a,b){var c,d,e,f,g;return e=2147483648&a,f=2147483648&b,c=1073741824&a,d=1073741824&b,g=(1073741823&a)+(1073741823&b),c&d?2147483648^g^e^f:c|d?1073741824&g?3221225472^g^e^f:1073741824^g^e^f:g^e^f}function c(a,c,d,e,f,g,h){return a=b(a,b(b(c&d|~c&e,f),h)),b(a<<g|a>>>32-g,c)}function d(a,c,d,e,f,g,h){return a=b(a,b(b(c&e|d&~e,f),h)),b(a<<g|a>>>32-g,c)}function e(a,c,d,e,f,g,h){return a=b(a,b(b(c^d^e,f),h)),b(a<<g|a>>>32-g,c)}function f(a,c,d,e,f,g,h){return a=b(a,b(b(d^(c|~e),f),h)),b(a<<g|a>>>32-g,c)}function g(a){var d,b="",c="";for(d=0;3>=d;d++)c=a>>>8*d&255,c="0"+c.toString(16),b+=c.substr(c.length-2,2);return b}var i,j,k,l,m,n,o,p,h=[];for(a=function(a){a=a.replace(/\r\n/g,"\n");for(var b="",c=0;c<a.length;c++){var d=a.charCodeAt(c);128>d?b+=String.fromCharCode(d):(127<d&&2048>d?b+=String.fromCharCode(d>>6|192):(b+=String.fromCharCode(d>>12|224),b+=String.fromCharCode(d>>6&63|128)),b+=String.fromCharCode(63&d|128))}return b}(a),h=function(a){var b,c=a.length;b=c+8;for(var d=16*((b-b%64)/64+1),e=Array(d-1),f=0,g=0;g<c;)b=(g-g%4)/4,f=g%4*8,e[b]|=a.charCodeAt(g)<<f,g++;return b=(g-g%4)/4,e[b]|=128<<g%4*8,e[d-2]=c<<3,e[d-1]=c>>>29,e}(a),m=1732584193,n=4023233417,o=2562383102,p=271733878,a=0;a<h.length;a+=16)i=m,j=n,k=o,l=p,m=c(m,n,o,p,h[a+0],7,3614090360),p=c(p,m,n,o,h[a+1],12,3905402710),o=c(o,p,m,n,h[a+2],17,606105819),n=c(n,o,p,m,h[a+3],22,3250441966),m=c(m,n,o,p,h[a+4],7,4118548399),p=c(p,m,n,o,h[a+5],12,1200080426),o=c(o,p,m,n,h[a+6],17,2821735955),n=c(n,o,p,m,h[a+7],22,4249261313),m=c(m,n,o,p,h[a+8],7,1770035416),p=c(p,m,n,o,h[a+9],12,2336552879),o=c(o,p,m,n,h[a+10],17,4294925233),n=c(n,o,p,m,h[a+11],22,2304563134),m=c(m,n,o,p,h[a+12],7,1804603682),p=c(p,m,n,o,h[a+13],12,4254626195),o=c(o,p,m,n,h[a+14],17,2792965006),n=c(n,o,p,m,h[a+15],22,1236535329),m=d(m,n,o,p,h[a+1],5,4129170786),p=d(p,m,n,o,h[a+6],9,3225465664),o=d(o,p,m,n,h[a+11],14,643717713),n=d(n,o,p,m,h[a+0],20,3921069994),m=d(m,n,o,p,h[a+5],5,3593408605),p=d(p,m,n,o,h[a+10],9,38016083),o=d(o,p,m,n,h[a+15],14,3634488961),n=d(n,o,p,m,h[a+4],20,3889429448),m=d(m,n,o,p,h[a+9],5,568446438),p=d(p,m,n,o,h[a+14],9,3275163606),o=d(o,p,m,n,h[a+3],14,4107603335),n=d(n,o,p,m,h[a+8],20,1163531501),m=d(m,n,o,p,h[a+13],5,2850285829),p=d(p,m,n,o,h[a+2],9,4243563512),o=d(o,p,m,n,h[a+7],14,1735328473),n=d(n,o,p,m,h[a+12],20,2368359562),m=e(m,n,o,p,h[a+5],4,4294588738),p=e(p,m,n,o,h[a+8],11,2272392833),o=e(o,p,m,n,h[a+11],16,1839030562),n=e(n,o,p,m,h[a+14],23,4259657740),m=e(m,n,o,p,h[a+1],4,2763975236),p=e(p,m,n,o,h[a+4],11,1272893353),o=e(o,p,m,n,h[a+7],16,4139469664),n=e(n,o,p,m,h[a+10],23,3200236656),m=e(m,n,o,p,h[a+13],4,681279174),p=e(p,m,n,o,h[a+0],11,3936430074),o=e(o,p,m,n,h[a+3],16,3572445317),n=e(n,o,p,m,h[a+6],23,76029189),m=e(m,n,o,p,h[a+9],4,3654602809),p=e(p,m,n,o,h[a+12],11,3873151461),o=e(o,p,m,n,h[a+15],16,530742520),n=e(n,o,p,m,h[a+2],23,3299628645),m=f(m,n,o,p,h[a+0],6,4096336452),p=f(p,m,n,o,h[a+7],10,1126891415),o=f(o,p,m,n,h[a+14],15,2878612391),n=f(n,o,p,m,h[a+5],21,4237533241),m=f(m,n,o,p,h[a+12],6,1700485571),p=f(p,m,n,o,h[a+3],10,2399980690),o=f(o,p,m,n,h[a+10],15,4293915773),n=f(n,o,p,m,h[a+1],21,2240044497),m=f(m,n,o,p,h[a+8],6,1873313359),p=f(p,m,n,o,h[a+15],10,4264355552),o=f(o,p,m,n,h[a+6],15,2734768916),n=f(n,o,p,m,h[a+13],21,1309151649),m=f(m,n,o,p,h[a+4],6,4149444226),p=f(p,m,n,o,h[a+11],10,3174756917),o=f(o,p,m,n,h[a+2],15,718787259),n=f(n,o,p,m,h[a+9],21,3951481745),m=b(m,i),n=b(n,j),o=b(o,k),p=b(p,l);return(g(m)+g(n)+g(o)+g(p)).toLowerCase()},
    c = tinycolor(MD5('your title or something').substr(0,6)),
    hsv = c.toHsv();

if (hsv.h >= 16 && hsv.h <= 52) c.spin(100);
let desired_hex = c.toString();
© www.soinside.com 2019 - 2024. All rights reserved.