• 목록
  • 아래로
  • 위로
  • 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 827
공지 [작업 완료] 설 명절 맞이 서버 업데이트 안내 3 마스터 마스터 24.02.11.17:21 2772
공지 [중요] 호스팅 만료와 관련하여 일부 수칙이 변경됩니다. 4 마스터 마스터 23.01.14.02:23 6492
116 ublock을 이용한 게시판에서의 특정 유저 차단 1 image 이니스프리 이니스프리 20.06.26.18:58 190
115 MS Chromium 엣지 브라우저 Beta의 공식버전 발표 image 이니스프리 이니스프리 19.08.24.22:39 189
114 [아미나] 미소 컴퍼니 / 미소 심플 테마와 관련된 정보 1 이니스프리 이니스프리 19.02.05.16:51 189
113 [KT] 오피스넷 가정 설치 관련 이니스프리 이니스프리 24.05.05.00:28 188
112 사실상 일본산 제품인데 헷갈리는 브랜드 6 이니스프리 이니스프리 20.06.10.20:05 187
111 (아래글에 이어서) 앱체크 라이선스 만료일에 주의할 점 이니스프리 이니스프리 19.05.18.14:16 187
110 [Python] COS Pro 1급 4-10 풀이 이니스프리 이니스프리 20.02.15.12:17 186
109 하드웨어 변경 후 Windows 10 다시 정품 인증하기 이니스프리 이니스프리 20.02.26.15:32 186
108 [KAL] 19-20년 성수기 기간 안내 image 이니스프리 이니스프리 19.10.16.14:52 186
107 [Selenium] Page down 이니스프리 이니스프리 22.06.19.12:40 186
106 [Python] 다중 list comprehension 이니스프리 이니스프리 20.02.14.13:08 185
105 [Flutter 오프라인 강좌] 네이티브(Android, iOS) 앱개발자를 위한 Flutter 정복 image 이니스프리 이니스프리 19.10.15.01:32 185
104 [할인정보] KFC 와우버켓 할인 (feat. 하니) image 이니스프리 이니스프리 17.02.03.13:09 184
103 11월 플러터 오프라인 강좌 이니스프리 이니스프리 19.11.06.13:41 184
102 [Docker] Docker 다시 알고 사용하기 Seia Seia 21.04.10.07:04 182
101 [Python] extension이 標示되지 않는 online image의 extension을 알아내기 이니스프리 이니스프리 22.04.01.20:51 182
100 [Python] MP4 움짤을 clip하여 thumbnail 生成하기 이니스프리 이니스프리 22.06.09.08:35 182
99 [파이썬] OS에 따른 파일경로 표기방법의 차이와 관련하여 이니스프리 이니스프리 19.07.08.20:27 180
98 [Python] 변수의 이름을 반환하는 함수 이니스프리 이니스프리 24.04.20.23:29 180
97 아미나에서 헤더와 푸터를 출력하지 않는 가장 간단한 방법 이니스프리 이니스프리 18.11.04.20:41 179