C++ 颜色转换
我的程序从png文件中读取许多字母。字母为黑白背景,如下图所示 我希望我的程序给定这些字母的颜色值,能够以任何文本颜色和任何背景颜色打印字母。例如,我想在蓝色背景中使用绿色文本显示“a”C++ 颜色转换,c++,algorithm,colors,C++,Algorithm,Colors,我的程序从png文件中读取许多字母。字母为黑白背景,如下图所示 我希望我的程序给定这些字母的颜色值,能够以任何文本颜色和任何背景颜色打印字母。例如,我想在蓝色背景中使用绿色文本显示“a” 使用以下代码,我可以将文本颜色更改为任何颜色: Color c; c.r = original_black.r + ((255 - original_black.r) / 255.0) * desired_colour.r; c.g = original_black.g + ((255 - original
使用以下代码,我可以将文本颜色更改为任何颜色:
Color c;
c.r = original_black.r + ((255 - original_black.r) / 255.0) * desired_colour.r;
c.g = original_black.g + ((255 - original_black.g) / 255.0) * desired_colour.g;
c.b = original_black.b + ((255 - original_black.b) / 255.0) * desired_colour.b;
结果:
问题:如何更新上述代码以将背景颜色更改为任何颜色,如下所示:
初始图片包含不同的颜色(可能类似于LCD显示器的ClearType像素渲染)。很难为所有前后颜色组合的彩色边缘像素选择可接受的方式。
所以我建议将初始图片的颜色转换为灰度。可能的公式之一:
Y = 0.299 R + 0.587 G + 0.114 B [0..255 range]
并将此值用作alpha混合中的alpha
c.r = (foreground.r * Y + (255 - Y) * background.r) / 255
等等