我想只用一种颜色为灰度图像着色。所以我有例如像素:RGB(34,34,34),我想用颜色着色它:RGB(200,100,50)以获得新的RGB像素。所以我对图像中的每个像素都这样做了。
白色像素得到颜色:RGB(200,100,50),较暗的像素得到比 RGB(200,100,50) 更深的颜色。
所以结果是带有黑色和选定颜色的灰度而不是黑色和白色。
我将在没有任何内置功能的情况下对这个硬核进行编程。
我想只用一种颜色为灰度图像着色。所以我有例如像素:RGB(34,34,34),我想用颜色着色它:RGB(200,100,50)以获得新的RGB像素。所以我对图像中的每个像素都这样做了。
白色像素得到颜色:RGB(200,100,50),较暗的像素得到比 RGB(200,100,50) 更深的颜色。
所以结果是带有黑色和选定颜色的灰度而不是黑色和白色。
我将在没有任何内置功能的情况下对这个硬核进行编程。
根据您的描述,我认为您正在寻找一种混合算法。
您需要的是 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
您需要做的就是使用灰色与白色的比率作为颜色的乘数。我想你会发现这比混合效果更好。
new_red = gray * target_red / 255
new_green = gray * target_green / 255
new_blue = gray * target_blue / 255