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

최근 여러가지 웹 개발을 하면서 한 가지 문제 상황에 봉착하였습니다. 주어진 이미지를 온전히 보여주면서 배경색 또한 자동으로 적합한 색으로 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차 해결 및 추가] 서버 접속 불가 문제 안내 1 new 마스터 마스터 7시간 전15:22 47
공지 [작업 완료] 설 명절 맞이 서버 업데이트 안내 3 마스터 마스터 24.02.11.17:21 2226
공지 [중요] 호스팅 만료와 관련하여 일부 수칙이 변경됩니다. 4 마스터 마스터 23.01.14.02:23 5905
116 [아미나] 미소 컴퍼니 / 미소 심플 테마와 관련된 정보 1 이니스프리 이니스프리 19.02.05.16:51 184
115 [Python] 리스트의 순서를 유지하되 중복되는 요소를 제거하기 이니스프리 이니스프리 20.11.15.14:54 183
114 [Python] 다중 list comprehension 이니스프리 이니스프리 20.02.14.13:08 183
113 11월 플러터 오프라인 강좌 이니스프리 이니스프리 19.11.06.13:41 183
112 [Python] 정규식을 사용하지 않고 웹페이지의 자바스크립트를 파싱 이니스프리 이니스프리 24.04.17.21:12 182
111 [할인정보] KFC 와우버켓 할인 (feat. 하니) image 이니스프리 이니스프리 17.02.03.13:09 182
110 Vultr.com - 오늘자 Service Alert 이니스프리 이니스프리 20.01.17.22:02 181
109 online 개발 툴입니다. 10 해피보이 20.07.01.11:27 180
108 [파이썬] OS에 따른 파일경로 표기방법의 차이와 관련하여 이니스프리 이니스프리 19.07.08.20:27 179
107 ublock을 이용한 게시판에서의 특정 유저 차단 1 image 이니스프리 이니스프리 20.06.26.18:58 179
106 하드웨어 변경 후 Windows 10 다시 정품 인증하기 이니스프리 이니스프리 20.02.26.15:32 178
105 [할인정보] 스와로브스키 50% 할인 image 이니스프리 이니스프리 17.01.22.22:45 178
104 아미나에서 헤더와 푸터를 출력하지 않는 가장 간단한 방법 이니스프리 이니스프리 18.11.04.20:41 177
103 [Python] MP4 움짤을 clip하여 thumbnail 生成하기 이니스프리 이니스프리 22.06.09.08:35 177
102 사실상 일본산 제품인데 헷갈리는 브랜드 6 이니스프리 이니스프리 20.06.10.20:05 176
101 [Vultr] Important Tax Notice 이니스프리 이니스프리 19.11.20.07:38 176
100 [아미나] 아미나 2.0으로의 리뉴얼 계획 이니스프리 이니스프리 19.03.12.13:03 175
99 Matrix DAC 발열 문제 이니스프리 이니스프리 20.01.31.12:34 175
98 [Selenium] Page down 이니스프리 이니스프리 22.06.19.12:40 175
97 cPanel의 Full backup의 옵션 1 image 이니스프리 이니스프리 19.03.22.22:36 175