• 목록
  • 아래로
  • 위로
  • 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 753
공지 [작업 완료] 설 명절 맞이 서버 업데이트 안내 3 마스터 마스터 24.02.11.17:21 2690
공지 [중요] 호스팅 만료와 관련하여 일부 수칙이 변경됩니다. 4 마스터 마스터 23.01.14.02:23 6402
316 Vivaldi 브라우저 2.10 업데이트 이니스프리 이니스프리 20.01.06.23:54 132
315 [나리야] 마지막 알파버전 금일 업로드 image 이니스프리 이니스프리 20.01.03.12:51 132
314 [Selenium] 다운로드받은 파일명 변경 이니스프리 이니스프리 20.01.03.12:47 2768
313 레노버 랩탑에서 Fn 키 설정 및 Ctrl 키와의 상호전환에 대하여 이니스프리 이니스프리 20.01.02.22:22 1113
312 [펌] 신발 깔창 리뷰 이니스프리 이니스프리 20.01.01.17:26 142
311 [파이썬] 어제 날짜(연월일) 구하기 이니스프리 이니스프리 20.01.01.12:42 1711
310 [파이썬] 엔터를 치지 않아도 키 입력 받기 (윈도우) 이니스프리 이니스프리 20.01.01.12:28 736
309 [파이썬] 여러 개의 공백을 하나로 줄이는 방법 이니스프리 이니스프리 19.12.28.00:12 1327
308 [파이썬] .isalnum() - 정규표현식을 사용하지 않고 문자열 내 특수문자 사용 여부 확인 이니스프리 이니스프리 19.12.27.22:43 4462
307 [Requests] r.text vs r.content 차이 이니스프리 이니스프리 19.12.27.22:40 302
306 [Selenium] alert 창을 닫는 방법 및 alert 창이 뜨는 것을 차단하는 방법 1 이니스프리 이니스프리 19.12.26.23:01 4591
305 이베이에서 저렴하게 올라오는 보안 프로그램에 관하여 이니스프리 이니스프리 19.12.26.12:12 126
304 최근 KT 해외망 간단 리뷰 이니스프리 이니스프리 19.12.25.23:21 176
303 [파이썬] 폴더 및 하위 폴더 내의 파일에서 문자열을 일괄적으로 replace하는 스크립트 이니스프리 이니스프리 19.12.25.13:01 1244
302 [파이썬] 길어진 로그 파일을 100줄로 줄이는 스크립트 이니스프리 이니스프리 19.12.25.11:49 153
301 [파이썬] .replace() 카운트하는 방법 이니스프리 이니스프리 19.12.24.11:25 667
300 일본 아마존에서 MP3 음원 구입하는 방법 5 image 제르엘 제르엘 19.12.23.01:28 7425
299 BeautifulSoup에서 로딩한 html이 짤리는 경우에 해결방법 image 이니스프리 이니스프리 19.12.19.21:57 222
298 [펌] 전자사전 관련 정보 8 image 이니스프리 이니스프리 19.12.17.13:58 134
297 [Selenium] WebDriverWait에서 EC 대신 람다 함수를 활용하기 이니스프리 이니스프리 19.12.17.01:27 421