• 목록
  • 아래로
  • 위로
  • 0
  • Seia
  • 조회 수 287

최근 여러가지 웹 개발을 하면서 한 가지 문제 상황에 봉착하였습니다. 주어진 이미지를 온전히 보여주면서 배경색 또한 자동으로 적합한 색으로 fill하도록 만들수는 없을까? 저의 경우에는 주어진 이미지에 여백이 충분히 있었기 때문에 2차원 캔버스 이미지에서 1x1 지점의 픽셀 데이터를 추출하는 식으로 이를 구현하였습니다. 캔버스 API의 경우에는 RGBA 값을 반환하니 충분히 시도해볼만 합니다.

 

// <CODE START> part.js


const context = canvas.getContext('2d')

const image = new Image()

image.src = props.image
image.onload = () => {
  // NOTE: Draw image to canvas context.
  context.drawImage(image, 0, 0)
  // NOTE: Hide image from the front.
  image.style.display = 'none'

  const pexel = context.getImageData(0, 0, 1, 1)
  const data = pexel.data

  setBackgroundColor('rgba(' + data[0] + ', ' + data[1] + ', ' + data[2] + ', ' + (data[3] / 255) + ')')
}

 

// <CODE END>

 

아직 적합한 Adaptive color 알고리즘은 구현하는 중에 있는데 생각보다 어렵네요... 참고로 canvas의 width와 height같은 경우는 동일하게 1x1만 필요하기 때문에 1x1로 설정하고 display: none 속성을 먹였습니다.

작성자
Seia 33 Lv. (42%) 89400/92480EXP

GitHub에서 seia-soto로 활동 중입니다.

댓글 0

권한이 없습니다.
번호 제목 글쓴이 날짜 조회 수
공지 [작업 완료] 설 명절 맞이 서버 업데이트 안내 3 마스터 마스터 24.02.11.17:21 736
공지 [중요] 호스팅 만료와 관련하여 일부 수칙이 변경됩니다. 4 마스터 마스터 23.01.14.02:23 4407
546 [Python] 변수의 이름을 반환하는 함수 이니스프리 이니스프리 24.04.20.23:29 61
545 [Python] Tabulate 모듈로 작성한 테이블을 파일로 저장할 때 에러가 발생하는 경우 이니스프리 이니스프리 24.04.20.23:45 61
544 색상선택 결정문제를 겪고 계신 분들 위한 사이트 OAUTH2 20.06.19.18:22 69
543 [Python] 독일어, 스페인어, 체코어 등 철자를 영문 알파벳으로 전환하기 이니스프리 이니스프리 6일 전17:15 75
542 database 백업 및 복원을 지원하는 site입니다. 해피보이 20.06.03.20:52 77
541 [Python] Table을 쉽게 만들어주는 모듈x2 이니스프리 이니스프리 24.04.18.22:04 80
540 [펌] Chrome will soon be less of a memory hog in Windows 10 3 이니스프리 이니스프리 20.06.24.00:12 82
539 [Python] Ubuntu에서 파이썬이 설치된 디렉토리를 간단히 확인하는 방법 2 이니스프리 이니스프리 20.08.03.22:58 88
538 [Javascript] 값을 이용하여 배열의 요소를 삭제하는 방법 이니스프리 이니스프리 21.04.13.22:10 97
537 순수 React만으로 다이내믹 태그 네이밍하기 Seia Seia 20.01.20.19:18 104
536 React 그리고 Redux 쉽게 이해하기 image Seia Seia 20.09.12.06:31 104
535 [Python] 문자열에서 파일명 또는 폴더명으로 시스템상 지원되는 글자를 제외하고 삭제하기 이니스프리 이니스프리 20.11.01.14:37 104
534 나리야 익명보드 및 내 글 알림 관련 Q&A image 이니스프리 이니스프리 21.02.14.17:30 107
533 [Python] 크롤링한 bytes를 string으로 변환 이니스프리 이니스프리 21.02.14.15:32 109
532 [Python] dictionary 2개의 평균을 구하여 내림차순 정렬하기 이니스프리 이니스프리 6일 전17:29 109
531 중국 배대지 휴무 이니스프리 이니스프리 20.01.14.13:01 112
530 [Python] 3개의 list를 하나의 dictionary로 변환하기 이니스프리 이니스프리 20.06.10.21:47 114
529 [Python] 정규식을 사용하지 않고 웹페이지의 자바스크립트를 파싱 이니스프리 이니스프리 24.04.17.21:12 114
528 IPVanish의 한국서버가 4개로 확충되었습니다. image 이니스프리 이니스프리 20.01.11.11:27 116
527 헷갈리는 출생지를 가진 인물들 1 이니스프리 이니스프리 20.06.26.21:09 116