How to find the average between RGB colors c1 and c2 in Scala

1 Answer

0 votes
object AverageColorHex {
  case class RGBA(r: Int, g: Int, b: Int, a: Int)

  def averageRGB(c1: RGBA, c2: RGBA): RGBA = {
    RGBA(
      (c1.r + c2.r) / 2,
      (c1.g + c2.g) / 2,
      (c1.b + c2.b) / 2,
      (c1.a + c2.a) / 2
    )
  }

  def rgbToHex(r: Int, g: Int, b: Int): String =
    f"#$r%02X$g%02X$b%02X"

  def main(args: Array[String]): Unit = {
    val color1 = RGBA(255, 100, 50, 255)
    val color2 = RGBA(50, 170, 200, 255)

    val average = averageRGB(color1, color2)
    val hex = rgbToHex(average.r, average.g, average.b)

    println(s"Average Color: R=${average.r}, G=${average.g}, B=${average.b}, A=${average.a}")
    println(s"Average Color (hex): $hex")
  }
}


 
/*
run:

Average Color: R=152, G=135, B=125, A=255
Average Color (hex): #98877D

*/

 



answered Jun 18, 2025 by avibootz
...