Hola otra vez:
Empezando por lo último, fíjate que hay una función "color(i)"
que devuelve el valor de i en formato hexadecimal de 2 letras (00..FF)
Lo del peso de la imagen, ten en cuenta que el ejemplo de degradado es de 256 tonalidades. No creo que tenga mucho peso un fichero de 256 x 1, incluso puedes usar un rango mucho mayor y hacer degradados oblícuos con ficheritos gráficos que tengan muy poco peso.
Saludos