java如何通过代码在位图上应用从蓝色到黄色的渐变,亮度作为因素
我需要对位图应用从蓝色到黄色的渐变。 这里的因素是亮度。 照片的暗区必须是蓝色,最亮的区域必须是黄色。 因此,需要将每个像素的亮度作为一个因素
有人能帮助我如何在C++或java中实现这一点吗? 输入是原始照片的rgb整数值数组你可以在下面搜索框中键入要查询的问题!
我需要对位图应用从蓝色到黄色的渐变。 这里的因素是亮度。 照片的暗区必须是蓝色,最亮的区域必须是黄色。 因此,需要将每个像素的亮度作为一个因素
有人能帮助我如何在C++或java中实现这一点吗? 输入是原始照片的rgb整数值数组
# 1 楼答案
听起来有点像一个家庭作业问题,但这里有一个大概的想法,或者至少,我会怎么做
对于每个像素,计算平均亮度,因此将}和
R
{B
相加,然后除以3得到结果(这里需要使用大于8位的变量!)现在,您有一个返回到0-255范围内的值,指示像素的亮度(有多种方法可以计算亮度,但现在就可以了)
全蓝是
(0,0,255)
,全黄是(255,255,0)
-因此需要在这些值之间进行插值(我们将在这里使用线性插值):例如,如果您的亮度为50,则为255的20%,因此您需要80%蓝色和20%黄色的颜色。您可以这样计算红色通道的valye:
对其他通道进行类似的计算,因此对于亮度为50的像素,我们将执行以下操作:
当然,我们不能有负值,使用
<>额外注释:在C++中使用类似的东西,我建议使用SDL,这是一个简单又容易的事情。p>B in Yellow - B in Blue
idea不会对蓝色通道进行切割,需要反转插值。通过取0.2并从1中减去,我们可以从另一个方向计算0-255的范围:# 2 楼答案
如果我理解正确,以下内容(分别应用于所有像素)应满足您的要求: