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

최근 여러가지 웹 개발을 하면서 한 가지 문제 상황에 봉착하였습니다. 주어진 이미지를 온전히 보여주면서 배경색 또한 자동으로 적합한 색으로 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 2631
공지 [중요] 호스팅 만료와 관련하여 일부 수칙이 변경됩니다. 4 마스터 마스터 23.01.14.02:23 10082
120 glob.glob()를 이용하여 recursive하게 하위 폴더까지 모든 파일과 디렉토리를 검색하기 이니스프리 이니스프리 20.08.12.16:22 1822
119 [Python] 폴더 내 이미지의 height를 측정하여 height < n 미만인 파일을 삭제하기 이니스프리 이니스프리 20.08.13.20:08 330
118 [Python] 확장자 확인 및 변경 이니스프리 이니스프리 20.08.23.12:17 2865
117 [MoviePy] 폴더의 모든 MP4 파일을 적절한 크기의 GIF 파일로 변환하기 이니스프리 이니스프리 20.08.23.14:18 431
116 [Selenium] 크롬 익스텐션 사용하기 1 이니스프리 이니스프리 20.08.23.19:35 1624
115 [Selenium] 요소가 완전히 로드될 때까지 기다리기 이니스프리 이니스프리 20.08.23.20:22 530
114 [Python] 폴더의 모든 파일명을 랜덤하게 변경하기 이니스프리 이니스프리 20.08.30.15:06 1154
113 React 그리고 Redux 쉽게 이해하기 image Seia Seia 20.09.12.06:31 311
JavaScript와 Canvas로 이미지의 배경값을 자동으로 산출하기 Seia Seia 20.09.12.06:37 444
111 [Amina] 그누보드 + 아미나 설치 방법 (처음 시작하는 분들을 위한 간단 매뉴얼) 이니스프리 이니스프리 20.10.01.16:48 507
110 [Python] 폴더 및 하위 폴더 내의 파일에서 문자열을 일괄적으로 replace하는 스크립트 (ver 1.1) 이니스프리 이니스프리 20.10.02.11:58 480
109 [Python] 유튜브 영상을 PC에 다운받은 후 영상파일을 90도 rotation 하기 (youtube_dl + moviepy) 4 이니스프리 이니스프리 20.10.03.17:58 508
108 [Python] 디렉토리 내 0바이트 파일 찾기 이니스프리 이니스프리 20.10.11.11:19 270
107 [Python] HWP 파일 읽기 6 이니스프리 이니스프리 20.10.18.12:19 2212
106 [Python] 2개의 리스트를 딕셔너리로 변환하는 3가지 방법 이니스프리 이니스프리 20.10.25.15:34 1108
105 [Python] 특정 단어가 들어가는 폴더 또는 파일을 옮기기 이니스프리 이니스프리 20.11.01.14:14 4070
104 [Python] Pytube를 이용하여 유튜브 영상을 간단히 다운받는 법에 대한 설명 이니스프리 이니스프리 20.11.01.14:25 537
103 [Python] 문자열에서 파일명 또는 폴더명으로 시스템상 지원되는 글자를 제외하고 삭제하기 이니스프리 이니스프리 20.11.01.14:37 149
102 [Python] 네이버 블로그 크롤링할 때 PostList.nhn 관련 팁 (문자열에서 첫번째 행을 제거하기) 이니스프리 이니스프리 20.11.08.18:16 285
101 [Python] 리스트의 순서를 유지하되 중복되는 요소를 제거하기 이니스프리 이니스프리 20.11.15.14:54 488