• 목록
  • 아래로
  • 위로
  • 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 969
공지 [중요] 호스팅 만료와 관련하여 일부 수칙이 변경됩니다. 4 마스터 마스터 23.01.14.02:23 4644
511 [Python] Youtube_dl 사용시 주의할 점 이니스프리 이니스프리 21.03.12.22:14 128
510 [Vultr] 2/1 service alert 이니스프리 이니스프리 19.01.31.12:12 129
509 (펌) 우분투에 IPVanish 설치 방법 이니스프리 이니스프리 19.11.07.22:46 129
508 [펌] 전자사전 관련 정보 8 image 이니스프리 이니스프리 19.12.17.13:58 129
507 [Python] 2020년 5급 신임관리자 교육과정에 파이썬 도입! image 이니스프리 이니스프리 20.02.11.23:48 129
506 [Python] 변수의 이름을 반환하는 함수 이니스프리 이니스프리 24.04.20.23:29 129
505 [Pillow] 파이썬에서 이미지 파일의 포맷을 알아내는 방법 이니스프리 이니스프리 19.11.14.23:25 130
504 Sourcerer: Git을 비주얼라이징 및 프로파일링합니다. image Seia Seia 20.01.20.07:38 131
503 [Python] MP4 -> JPG thumbnail 生成 1 이니스프리 이니스프리 22.06.04.16:38 131
502 [Python] print 되는대로 string으로 변환하는 function 이니스프리 이니스프리 22.05.22.19:59 133
501 [Python] MP4 50% 進行된 frame을 JPG thumbnail로 生成 이니스프리 이니스프리 22.06.06.15:15 133
500 목록통관건 개인통관고유부호 필수 사용안내 이니스프리 이니스프리 19.08.28.23:14 135
499 '20 TEPS 일정 image 이니스프리 이니스프리 19.11.23.15:26 135
498 무료 온라인 스토리지 전송속도 비교 3 image 이니스프리 이니스프리 19.11.27.18:40 136
497 [Ramnode] SSD 용량 추가! 2 image 이니스프리 이니스프리 20.02.17.22:20 136
496 [Python] 폴더 내 이미지의 height를 측정하여 height < n 미만인 파일을 삭제하기 이니스프리 이니스프리 20.08.13.20:08 136
495 [Flutter] 오프라인 강좌 10/20(일) image 이니스프리 이니스프리 19.10.14.11:36 137
494 [파이썬] OS에 따라서 경로를 달리하기 이니스프리 이니스프리 20.01.07.22:15 137
493 SSFSHOP에서 모든 사이즈가 조회되는 것은 아니군요 1 이니스프리 이니스프리 20.03.08.17:45 137
492 [KAL] 보너스 항공권 공제 마일리지 표 (평수기) 1 image 이니스프리 이니스프리 19.10.16.14:55 140