이 문제는 이미지에서 색조를 점진적으로 변경하여 다음과 같이 예쁜 그림을 만듭니다.
( 원본 )
도전
음수가 아닌 두 개의 정수와 선택한 일반적인 이미지 파일 형식의 이미지를 사용하는 프로그램 또는 함수를 작성하십시오 (이미지 또는 원시 이미지 데이터에 대한 경로를 취할 수 있음).
첫 번째 정수는 사이클이라고 하고 두 번째 정수는 오프셋 이라고 부릅니다 .
우리는 또한 부동 소수점 정의 할 것이다 단계 360 번으로 순환 하여 이미지의 영역, 또는으로 나눈 값을 step = 360 * cycles / (image width * image height)
.
이미지의 각 픽셀 P 에 대해 한 번에 한 행씩 왼쪽에서 오른쪽으로, 위에서 아래로 (픽셀이 문자 인 경우 읽기 순서로) 이동하면 다음을 수행하십시오.
증가 색조 의 P 에 의해 오프셋 (필요한 경우 0에서 360의 주위에 루핑)도.
그런 다음 단계적으로 오프셋 을 늘리십시오 .
결과 이미지를 일반적인 이미지 파일 형식으로 저장, 표시 또는 출력하지 않습니다.
이 절차는 점진적으로 만드는 이미지의 모든 픽셀의 색상을 증가 사이클을 주위에 전체 루프를 색조 무지개 에 의해 처음 색조를 상쇄에 의해 시작 오프셋 .
되면 사이클 1 및 오프셋 위 나이트 별 화상과 0 인 풀 컬러 사이클 거기 사이의 위쪽 및 아래쪽의 화소의 행은 실제적으로 색조 변화하지만 없다.
세부
사이클 은 음이 아닌 정수일 수 있지만 오프셋 이 0에서 359 사이 라고 가정 할 수 있습니다 .
때 사이클이 0, 이미지의 모든 픽셀은 색상이 정확히으로 이동해야합니다 오프셋 이후 단계는 너무 0이어야합니다. (이 경우 오프셋 이 0이면 이미지가 전혀 변경되지 않습니다.)
원하는 경우 사이클 과 오프셋 이 플로트로 입력 된다고 가정 할 수 있습니다 (예 :
1.0
대신1
). (나는 정수가 될 필요가 없다는 것을 알고 있습니다. 어려움을 간단하게 만듭니다.)"색조"는 HSL / HSV 색상 모델 에서 일반적으로 사용되는 RGB 색상 공간 버전을 나타냅니다 .
예
기발한:
사이클 = 1, 오프셋 = 0 :
사이클 = 1, 오프셋 = 180 :
기발한:
사이클 = 2, 오프셋 = 60 :
기발한:
사이클 = 1, 오프셋 = 120 :
기발한:
( 도움말 감사합니다 .)
사이클 = 1, 오프셋 = 0 :
사이클 = 4, 오프셋 = 0 :
사이클 = 200, 오프셋 = 0 :
사이클 = 30000, 오프셋 = 0 :
(이러한 이미지는 이미지 압축으로 인해 완벽한 픽셀이 아닐 수 있습니다.)
채점
바이트 단위의 가장 짧은 코드가 이깁니다. Tiebreaker가 더 높은 투표 응답입니다.
자신의 멋진 테스트 이미지를 게시하는 답변은 나에게 더 많은 브라우니 포인트를 얻습니다.