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

최근 여러가지 웹 개발을 하면서 한 가지 문제 상황에 봉착하였습니다. 주어진 이미지를 온전히 보여주면서 배경색 또한 자동으로 적합한 색으로 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 1679
공지 [중요] 호스팅 만료와 관련하여 일부 수칙이 변경됩니다. 4 마스터 마스터 23.01.14.02:23 5388
496 [Python] Google Trend의 '최근 인기 검색어' 크롤링 3 이니스프리 이니스프리 21.05.02.12:24 487
495 [Python] for 문에 두 개의 리스트를 넣고 enumerate를 사용하는 방법 이니스프리 이니스프리 21.05.01.21:01 220
494 [Python] 입력받은 연도가 윤년이 아니면 그보다 가장 가까운 과거의 윤년을 출력하기 8 이니스프리 이니스프리 21.04.19.20:23 437
493 [Javascript] 이미지 업로드 전 가로x세로 사이즈를 확인하여 지정된 크기 이상인 경우 alert 띄우는 스크립트 이니스프리 이니스프리 21.04.17.21:28 125
492 [HTML] 특정 사이트의 파비콘을 다운로드 받는 방법 이니스프리 이니스프리 21.04.16.22:02 263
491 [Javascript] 값을 이용하여 배열의 요소를 삭제하는 방법 이니스프리 이니스프리 21.04.13.22:10 98
490 [Gnuboard] DB 테이블 중 g5_board_file에 대하여 이니스프리 이니스프리 21.04.11.16:25 402
489 [Windows] Windows 업데이트 원천 방지하기 5 image Seia Seia 21.04.10.07:10 251
488 [Docker] Docker 다시 알고 사용하기 Seia Seia 21.04.10.07:04 169
487 [미디어위키/리버티 스킨] 모바일 환경에서 가로로 긴 표가 짤리는 현상 개선하기(스크롤 구현) image 가온이 가온이 21.04.09.20:07 219
486 [Python] 내일 날짜를 구하기 3 이니스프리 이니스프리 21.03.31.23:46 767
485 [Python] 네이트 실시간 검색어 크롤링 1 이니스프리 이니스프리 21.03.22.20:16 1007
484 [Python] 간단하게 내 ip 확인하기 3 이니스프리 이니스프리 21.03.20.00:26 222
483 [Python] 특정 서버와 내 PC 간의 시간 차이를 구하기 (테스트 중) 이니스프리 이니스프리 21.03.20.00:11 1407
482 [Python] Youtube Playlist에 담긴 동영상들을 역순으로 불러오기 이니스프리 이니스프리 21.03.19.00:41 149
481 [미디어위키]웹호스팅상의 미디어위키 사용자들께 대박 좋은 일이 일어났어요! 2 입체그림 21.03.14.10:53 127
480 [Python] 파이썬으로 평균을 구하는 두 가지 방법 이니스프리 이니스프리 21.03.13.21:58 167
479 [Python] 동영상 파일의 재생시간 길이를 구하기 (OpenCV vs MoviePy) 이니스프리 이니스프리 21.03.12.22:33 4667
478 [Python] Youtube_dl 사용시 주의할 점 이니스프리 이니스프리 21.03.12.22:14 131
477 [Python] Youtube Data API를 이용하여 특정 채널의 모든 비디오 링크를 얻는 함수 이니스프리 이니스프리 21.03.12.22:05 395