3

简单地说,给定一个初始颜色“#1010CA”和一个 alpha 因子 0.5,我怎样才能得到图中显示的最终颜色color="#1010CA", alpha=0.5

或者更直截了当,我应该填写什么

plot(x, y, color=__)

所以它相当于(至少在视觉上)

plot(x, y, color="#1010CA", alpha=0.5)

? 我想这不应该是一个 python 问题,而是如何通过某种因素操纵 rgb 颜色来抑制它,但请原谅我对调色板的无知......

编辑

这是我在接受@Blender 的回答后选择的当前解决方案

import matplotlib
import numpy as np
def alpha_blending(hex_color, alpha) :
    """ alpha blending as if on the white background.
    """
    foreground_tuple  = matplotlib.colors.hex2color(hex_color)
    foreground_arr = np.array(foreground_tuple)
    final = tuple( (1. -  alpha) + foreground_arr*alpha )
    return(final)
4

2 回答 2

1

如果没有背景颜色,您也无法获得“最终颜色”。

但是为了渲染 alpha 透明度,我加权和会起作用:

final = (1 - alpha) * background + alpha * foreground

因此,如果您的颜色是白色并且您的alpha = 0.5,您可以执行以下操作:

final = rgb(0.5, 0.5, 0.5) + foreground / 2

Matplotlib 接受 RGB 元组,因此您可以很容易地制作不透明度展平功能。但是,我无法回答您为什么需要这样做。

于 2012-05-18T05:11:40.263 回答
0

问题在于它是影响最终像素颜色的两种颜色(前景和背景)的混合。如果您从白色作为背景开始,将前景色转换为HSI颜色空间(http://en.wikipedia.org/wiki/HSL_and_HSV)并使用I作为您的 alpha 通道可以让您接近。对于更接近的匹配,您可以使用L*a*b颜色空间 ( http://en.wikipedia.org/wiki/CIELAB ) 并更改L以匹配您的透明度比率。

于 2012-05-18T05:24:48.723 回答