0

我想只用一种颜色为灰度图像着色。所以我有例如像素:RGB(34,34,34),我想用颜色着色它:RGB(200,100,50)以获得新的RGB像素。所以我对图像中的每个像素都这样做了。

白色像素得到颜色:RGB(200,100,50),较暗的像素得到比 RGB(200,100,50) 更深的颜色。

所以结果是带有黑色和选定颜色的灰度而不是黑色和白色。

我将在没有任何内置功能的情况下对这个硬核进行编程。

与此类似:图片或此:图片

4

2 回答 2

2

根据您的描述,我认为您正在寻找一种混合算法。

您需要的是 blendingPercentage (bP)。

新红色 = red1 * bP + red2 * (1 - bP)
新绿色 = green1 * bP + green2 * (1 - bP)
新蓝色 = blue1 * bP + blue2 * (1 - bP)

你的基色是 RGB 34 34 34;例如,要混合的颜色为 RGB 200 100 50
BlendingPercentage = 50% -> 0.5

因此:
新红 = 34 * 0.5 + 200 * (1 - 0.5) = 117
新绿 = 34 * 0.5 + 100 * (1 - 0.5) = 67
新蓝 = 34 * 0.5 + 50 * (1 - 0.5) = 42

于 2013-05-14T16:11:21.263 回答
1

您需要做的就是使用灰色与白色的比率作为颜色的乘数。我想你会发现这比混合效果更好。

new_red = gray * target_red / 255
new_green = gray * target_green / 255
new_blue = gray * target_blue / 255
于 2013-05-14T20:08:08.580 回答