Este desafío se trata de cambiar gradualmente los tonos en una imagen para hacer imágenes bonitas como esta:
( original )
Reto
Escriba un programa o función que tome dos enteros no negativos y una imagen en cualquier formato de archivo de imagen común que elija (puede tomar un camino hacia la imagen o los datos de la imagen sin procesar).
Llamaremos al primer entero los ciclos y al segundo entero el desplazamiento .
También definiremos el paso de coma flotante como ciclos de 360 veces divididos por el área de la imagen, o step = 360 * cycles / (image width * image height)
.
Para cada píxel P en la imagen, moviendo una fila a la vez, de izquierda a derecha, de arriba a abajo (es decir, en orden de lectura si los píxeles fueran letras), haga lo siguiente:
Aumente el tono de P en grados de desplazamiento (girando de 360 a 0 si es necesario).
Luego aumente la compensación por pasos .
Guarde, muestre o imprima la imagen resultante en cualquier formato de archivo de imagen común.
Este procedimiento aumenta gradualmente el tono de todos los píxeles en la imagen, haciendo ciclos de bucles completos alrededor del arco iris de tono , comenzando por compensar inicialmente el tono por desplazamiento .
Cuando los ciclos son 1 y el desplazamiento es 0, como en la imagen Starry Night anterior, las filas de píxeles superior e inferior prácticamente no tienen cambio de tono, pero en el medio hay un ciclo de color completo.
Detalles
Los ciclos pueden ser cualquier número entero no negativo, pero puede suponer que el desplazamiento es de 0 a 359 inclusive.
Cuando los ciclos son 0, cada píxel de la imagen tendrá su tonalidad desplazada exactamente por desplazamiento, ya que el paso también debe ser 0. (En este caso, si el desplazamiento es 0, la imagen no cambia en absoluto).
Si lo desea, puede suponer que los ciclos y el desplazamiento se introducen como flotantes (es decir, en
1.0
lugar de1
). (Me doy cuenta de que no necesitan ser enteros en absoluto, solo hace que el desafío sea más simple)."Tono" se refiere a la versión de espacio de color RGB, común en los modelos de color HSL / HSV .
Ejemplos
Original:
Ciclos = 1, desplazamiento = 0:
Ciclos = 1, desplazamiento = 180:
Original:
Ciclos = 2, desplazamiento = 60:
Original:
(Gracias ArtOfCode .)
Ciclos = 1, desplazamiento = 120:
Original:
(Gracias pomo de la puerta )
Ciclos = 1, desplazamiento = 0:
Ciclos = 4, desplazamiento = 0:
Ciclos = 200, desplazamiento = 0:
Ciclos = 30000, desplazamiento = 0:
(Estas imágenes pueden no ser perfectas en píxeles debido a que imgur las comprime).
Tanteo
El código más corto en bytes gana. Tiebreaker es la respuesta más votada.
Las respuestas que publiquen sus propias imágenes de prueba de aspecto genial obtendrán más puntos brownie de mí.