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

최근 여러가지 웹 개발을 하면서 한 가지 문제 상황에 봉착하였습니다. 주어진 이미지를 온전히 보여주면서 배경색 또한 자동으로 적합한 색으로 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 1039
공지 [중요] 호스팅 만료와 관련하여 일부 수칙이 변경됩니다. 4 마스터 마스터 23.01.14.02:23 4709
333 텔레그램 비밀대화의 스크린캡쳐 방지기능 이니스프리 이니스프리 20.01.20.23:44 5906
332 Postman에서 Temporary Header는 비활성화할 수 없습니다. 3 image Seia Seia 20.01.20.19:31 228
331 순수 React만으로 다이내믹 태그 네이밍하기 Seia Seia 20.01.20.19:18 104
330 Sourcerer: Git을 비주얼라이징 및 프로파일링합니다. image Seia Seia 20.01.20.07:38 131
329 [우체국 택배] 수취인 수령장소 변경 서비스 이니스프리 이니스프리 20.01.19.23:08 260
328 TCP BBR을 사용하여 기존 TCP 구현보다도 훨씬 빠른 속도를 즐기는 방법 2 image Seia Seia 20.01.19.07:01 155
327 Vultr.com - 오늘자 Service Alert 이니스프리 이니스프리 20.01.17.22:02 175
326 중국 배대지 휴무 이니스프리 이니스프리 20.01.14.13:01 112
325 [파이썬] random.randint()에서 주의할 점 이니스프리 이니스프리 20.01.13.00:49 219
324 엠팍에서 첨부 이미지 크롤링을 할 때 400대 에러가 뜨는 경우 이니스프리 이니스프리 20.01.12.23:38 192
323 DHTML 에디터에서 Hard Break vs Soft Break 이니스프리 이니스프리 20.01.12.13:48 120
322 [국립국어원] 세팅 vs 셋팅 이니스프리 이니스프리 20.01.11.16:56 1452
321 IPVanish의 한국서버가 4개로 확충되었습니다. image 이니스프리 이니스프리 20.01.11.11:27 116
320 [Flutter] 오프라인 강좌 이니스프리 이니스프리 20.01.09.00:12 121
319 [카고야] 공지 메일이 왔네요~ 이니스프리 이니스프리 20.01.08.13:27 121
318 [오프라인 강좌] 오픈소스 협업을 위한 Git 트레이닝 image 이니스프리 이니스프리 20.01.08.00:13 119
317 [파이썬] OS에 따라서 경로를 달리하기 이니스프리 이니스프리 20.01.07.22:15 137
316 Vivaldi 브라우저 2.10 업데이트 이니스프리 이니스프리 20.01.06.23:54 127
315 [나리야] 마지막 알파버전 금일 업로드 image 이니스프리 이니스프리 20.01.03.12:51 127
314 [Selenium] 다운로드받은 파일명 변경 이니스프리 이니스프리 20.01.03.12:47 2732