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

최근 여러가지 웹 개발을 하면서 한 가지 문제 상황에 봉착하였습니다. 주어진 이미지를 온전히 보여주면서 배경색 또한 자동으로 적합한 색으로 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

권한이 없습니다.
번호 제목 글쓴이 날짜 조회 수
공지 [1차 해결 및 추가] 서버 접속 불가 문제 안내 13 마스터 마스터 24.06.20.15:22 782
공지 [작업 완료] 설 명절 맞이 서버 업데이트 안내 3 마스터 마스터 24.02.11.17:21 2709
공지 [중요] 호스팅 만료와 관련하여 일부 수칙이 변경됩니다. 4 마스터 마스터 23.01.14.02:23 6422
116 Programmers에서 비메오 오류로 강의가 재생되지 않을 때 해결방법 이니스프리 이니스프리 19.12.10.19:22 1107
115 레노버 랩탑에서 Fn 키 설정 및 Ctrl 키와의 상호전환에 대하여 이니스프리 이니스프리 20.01.02.22:22 1113
114 masonry 라이브러리 사용시 세로방향 이미지 겹침 문제에 대한 해결방법 이니스프리 이니스프리 19.07.20.23:39 1178
113 [할인정보] 핫스팟쉴드 엘리트 VPN 평생 이용권 99.99달러 3 이니스프리 이니스프리 17.02.09.23:25 1193
112 [건강/의학] 허리디스크,목디스크 혹은 허리,목아프신분들을 위한 팁. 2 image death death 17.01.25.21:25 1197
111 [Python] 엑셀 파일에 암호 설정 (Set password for Excel file using Python) 3 image 이니스프리 이니스프리 21.07.09.21:21 1215
110 [파이썬] 명언 엑셀파일 to CSV 변환 스크립트 이니스프리 이니스프리 19.07.09.23:19 1232
109 [Python] Requests에서 SSLError 발생 시 대처 방법 이니스프리 이니스프리 21.09.19.15:12 1241
108 [파이썬] 폴더 및 하위 폴더 내의 파일에서 문자열을 일괄적으로 replace하는 스크립트 이니스프리 이니스프리 19.12.25.13:01 1244
107 GitHub에서 학생계정 얻고 Private Repo 사용하기 5 Seia Seia 18.06.23.22:34 1245
106 그누보드 캡챠(KCaptcha)의 설정을 변경하는 방법 이니스프리 이니스프리 18.11.14.21:22 1255
105 [Python] 이차원 리스트에서의 다중조건 정렬 이니스프리 이니스프리 20.02.08.23:00 1314
104 빠르고 간단한 인터넷 속도 측정기 14 망할윈도우미 망할윈도우미 18.05.28.20:05 1316
103 [Python] wav, mp3 재생하기 이니스프리 이니스프리 20.03.15.13:43 1319
102 [파이썬] 여러 개의 공백을 하나로 줄이는 방법 이니스프리 이니스프리 19.12.28.00:12 1327
101 [Python] m3u8 파일의 목록에 있는 ts 파일들을 merge하는 방법 6 이니스프리 이니스프리 20.06.20.22:03 1379
100 URL에 ?ckattempt=1이 붙거나 403 에러가 뜨는 경우에 해결 방법 (카페24) 2 이니스프리 이니스프리 17.11.22.20:56 1437
99 [Python] 특정 서버와 내 PC 간의 시간 차이를 구하기 (테스트 중) 이니스프리 이니스프리 21.03.20.00:11 1439
98 파이썬 텔레그램 봇에서 IndexError 해결 방법 2 이니스프리 이니스프리 18.03.24.21:15 1447
97 ESET Internet Security 사용시 인터넷 속도저하와 관련하여 이니스프리 이니스프리 19.01.01.21:51 1475