2024-09-30 18:26:55 发布
网友
我随机生成不同的颜色,如下所示:
import random import numpy as np random_number = np.random.randint(0,16777215) hex_number = str(hex(random_number)) hex_number ='#'+ hex_number[2:]
但这会产生更多的浅色而不是深色。我如何修改它来生成更暗的墨镜。有吗感谢帮助。在
您可以使用以下逻辑使hex颜色变暗(使用色调、亮度、饱和度(HLS)表示):
hex
(HLS)
import numpy as np from colormap import rgb2hex, rgb2hls, hls2rgb # pip install colormap # pip install easydev def hex_to_rgb(hex): hex = hex.lstrip('#') hlen = len(hex) return tuple(int(hex[i:i+hlen//3], 16) for i in range(0, hlen, hlen//3)) def adjust_color_lightness(r, g, b, factor): h, l, s = rgb2hls(r / 255.0, g / 255.0, b / 255.0) l = max(min(l * factor, 1.0), 0.0) r, g, b = hls2rgb(h, l, s) return rgb2hex(int(r * 255), int(g * 255), int(b * 255)) def darken_color(r, g, b, factor=0.1): return adjust_color_lightness(r, g, b, 1 - factor) random_number = np.random.randint(0,16777215) hex_number = str(hex(random_number)) hex_number ='#'+ hex_number[2:] r, g, b = hex_to_rgb(hex_number) # hex to rgb format print(darken_color(r, g, b))
在上面,您可以根据需要设置factor参数来调整颜色的明暗度。在
factor
正如评论所暗示的,尝试不同的颜色空间可能是一个更好的主意。例如,您可以使用HSV颜色空间和matplotlib提供的一些函数。在
matplotlib
import numpy as np from matplotlib.colors import hsv_to_rgb, to_hex def rand_col(min_v=0.5, max_v=1.0): hsv = np.concatenate([np.random.rand(2), np.random.uniform(min_v, max_v, size=1)]) return to_hex(hsv_to_rgb(hdv))
如果降低min_v参数,则可以获得较暗的颜色。在
min_v
您可以使用以下逻辑使
hex
颜色变暗(使用色调、亮度、饱和度(HLS)
表示):在上面,您可以根据需要设置
factor
参数来调整颜色的明暗度。在正如评论所暗示的,尝试不同的颜色空间可能是一个更好的主意。例如,您可以使用HSV颜色空间和
matplotlib
提供的一些函数。在如果降低
min_v
参数,则可以获得较暗的颜色。在相关问题 更多 >
编程相关推荐