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

최근 여러가지 웹 개발을 하면서 한 가지 문제 상황에 봉착하였습니다. 주어진 이미지를 온전히 보여주면서 배경색 또한 자동으로 적합한 색으로 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 1061
공지 [중요] 호스팅 만료와 관련하여 일부 수칙이 변경됩니다. 4 마스터 마스터 23.01.14.02:23 4737
114 masonry 라이브러리 사용시 세로방향 이미지 겹침 문제에 대한 해결방법 이니스프리 이니스프리 19.07.20.23:39 1171
113 [건강/의학] 허리디스크,목디스크 혹은 허리,목아프신분들을 위한 팁. 2 image death death 17.01.25.21:25 1185
112 [할인정보] 핫스팟쉴드 엘리트 VPN 평생 이용권 99.99달러 3 이니스프리 이니스프리 17.02.09.23:25 1187
111 [Python] 엑셀 파일에 암호 설정 (Set password for Excel file using Python) 3 image 이니스프리 이니스프리 21.07.09.21:21 1198
110 [Python] Requests에서 SSLError 발생 시 대처 방법 이니스프리 이니스프리 21.09.19.15:12 1224
109 [파이썬] 명언 엑셀파일 to CSV 변환 스크립트 이니스프리 이니스프리 19.07.09.23:19 1225
108 GitHub에서 학생계정 얻고 Private Repo 사용하기 5 Seia Seia 18.06.23.22:34 1239
107 [파이썬] 폴더 및 하위 폴더 내의 파일에서 문자열을 일괄적으로 replace하는 스크립트 이니스프리 이니스프리 19.12.25.13:01 1242
106 그누보드 캡챠(KCaptcha)의 설정을 변경하는 방법 이니스프리 이니스프리 18.11.14.21:22 1244
105 [Python] 이차원 리스트에서의 다중조건 정렬 이니스프리 이니스프리 20.02.08.23:00 1299
104 [Python] wav, mp3 재생하기 이니스프리 이니스프리 20.03.15.13:43 1300
103 빠르고 간단한 인터넷 속도 측정기 14 망할윈도우미 망할윈도우미 18.05.28.20:05 1307
102 [파이썬] 여러 개의 공백을 하나로 줄이는 방법 이니스프리 이니스프리 19.12.28.00:12 1321
101 [Python] m3u8 파일의 목록에 있는 ts 파일들을 merge하는 방법 6 이니스프리 이니스프리 20.06.20.22:03 1355
100 [Python] 특정 서버와 내 PC 간의 시간 차이를 구하기 (테스트 중) 이니스프리 이니스프리 21.03.20.00:11 1405
99 URL에 ?ckattempt=1이 붙거나 403 에러가 뜨는 경우에 해결 방법 (카페24) 2 이니스프리 이니스프리 17.11.22.20:56 1425
98 파이썬 텔레그램 봇에서 IndexError 해결 방법 2 이니스프리 이니스프리 18.03.24.21:15 1436
97 [국립국어원] 세팅 vs 셋팅 이니스프리 이니스프리 20.01.11.16:56 1454
96 [PIL] 폴더의 전체 이미지 파일을 일괄적으로 crop하기 이니스프리 이니스프리 20.05.29.18:56 1457
95 ESET Internet Security 사용시 인터넷 속도저하와 관련하여 이니스프리 이니스프리 19.01.01.21:51 1464