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

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

권한이 없습니다.
번호 제목 글쓴이 날짜 조회 수
공지 시스템 점검 작업 완료 안내 10 마스터 마스터 24.09.05.16:25 1018
공지 [중요] 호스팅 만료와 관련하여 일부 수칙이 변경됩니다. 4 마스터 마스터 23.01.14.02:23 7772
457 하드웨어 변경 후 Windows 10 다시 정품 인증하기 이니스프리 이니스프리 20.02.26.15:32 195
456 [Selenium] Page down 이니스프리 이니스프리 22.06.19.12:40 195
455 [아미나] 미소 컴퍼니 / 미소 심플 테마와 관련된 정보 1 이니스프리 이니스프리 19.02.05.16:51 196
454 [Python] Table을 쉽게 만들어주는 모듈x2 이니스프리 이니스프리 24.04.18.22:04 196
453 [Python] 다중 list comprehension 이니스프리 이니스프리 20.02.14.13:08 197
452 MS Chromium 엣지 브라우저 Beta의 공식버전 발표 image 이니스프리 이니스프리 19.08.24.22:39 199
451 [KAL] 19-20년 성수기 기간 안내 image 이니스프리 이니스프리 19.10.16.14:52 199
450 [Python] 리스트의 순서를 유지하되 중복되는 요소를 제거하기 이니스프리 이니스프리 20.11.15.14:54 199
449 [Python] COS Pro 1급 4-10 풀이 이니스프리 이니스프리 20.02.15.12:17 200
448 ublock을 이용한 게시판에서의 특정 유저 차단 1 image 이니스프리 이니스프리 20.06.26.18:58 200
447 [Python] Youtube API를 사용하지 않고 특정 채널의 모든 비디오 URL을 가져오기 이니스프리 이니스프리 24.06.09.22:12 200
446 Vultr.com - 오늘자 Service Alert 이니스프리 이니스프리 20.01.17.22:02 202
445 [학습정보] 구글 게이밍 아카데미 2/18 9 image 이니스프리 이니스프리 19.02.05.16:38 203
444 [끝말잇기] '슘'으로 시작되는 단어 중 XE타운에서 사용할 수 있는 단어 이니스프리 이니스프리 19.08.25.01:01 203
443 online 개발 툴입니다. 10 해피보이 20.07.01.11:27 204
442 [파이썬] random.choice() - 시퀀스 내의 요소를 랜덤하게 반환하기 이니스프리 이니스프리 20.06.27.16:37 205
441 [생활정보] 기존 영역 벗어나 새로워진  편의점 크로스오버 상품 5 image 이니스프리 이니스프리 17.01.23.16:24 206
440 [이벤트] 롯데리아 행쇼팩 9900원과 핫크리스피버거 1+1 image 부루마블 17.01.25.23:05 206
439 [VSCode] 1개의 OS에 VSCode 여러 개를 설치 및 구동하기 이니스프리 이니스프리 24.05.26.05:09 206
438 [Telegram] Bot의 inline keyboard 제거 이니스프리 이니스프리 22.07.01.20:35 208