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

최근 여러가지 웹 개발을 하면서 한 가지 문제 상황에 봉착하였습니다. 주어진 이미지를 온전히 보여주면서 배경색 또한 자동으로 적합한 색으로 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 612
공지 [중요] 호스팅 만료와 관련하여 일부 수칙이 변경됩니다. 4 마스터 마스터 23.01.14.02:23 7477
517 [KAL] 보너스 항공권 공제 마일리지 표 (평수기) 1 image 이니스프리 이니스프리 19.10.16.14:55 147
516 [펌] 신발 깔창 리뷰 이니스프리 이니스프리 20.01.01.17:26 148
515 '20 TEPS 일정 image 이니스프리 이니스프리 19.11.23.15:26 149
514 [파이썬] OS에 따라서 경로를 달리하기 이니스프리 이니스프리 20.01.07.22:15 149
513 [Flutter] 오프라인 강좌 10/20(일) image 이니스프리 이니스프리 19.10.14.11:36 150
512 [Ramnode] SSD 용량 추가! 2 image 이니스프리 이니스프리 20.02.17.22:20 151
511 [Python] 폴더 내 이미지의 height를 측정하여 height < n 미만인 파일을 삭제하기 이니스프리 이니스프리 20.08.13.20:08 151
510 [Python] MP4 -> JPG thumbnail 生成 1 이니스프리 이니스프리 22.06.04.16:38 151
509 [Python] MP4 50% 進行된 frame을 JPG thumbnail로 生成 이니스프리 이니스프리 22.06.06.15:15 151
508 [Requests] params, data 전달시에 딕셔너리의 구조가 복잡한 경우 해결방법 이니스프리 이니스프리 19.11.17.14:55 152
507 헷갈리는 출생지를 가진 인물들 1 이니스프리 이니스프리 20.06.26.21:09 152
506 [Python] print() 문의 문자열 출력 형식 2 이니스프리 이니스프리 20.02.15.22:16 154
505 [Python] 딕셔너리 자료형에서 .get() 메서드 사용시 에러 회피하기 이니스프리 이니스프리 20.02.15.22:48 155
504 [Python] 문자열에서 숫자만 뽑아서 정수로 반환하는 함수 이니스프리 이니스프리 20.02.12.00:01 156
503 [파이썬] 길어진 로그 파일을 100줄로 줄이는 스크립트 이니스프리 이니스프리 19.12.25.11:49 157
502 HDMI 단자의 QHD 출력을 정식으로 지원하지 않는 NVIDIA 그래픽 카드로 QHD 60 Hz 해상도 출력하기 2 image 제르엘 제르엘 24.06.09.17:45 158
501 SSFSHOP에서 모든 사이즈가 조회되는 것은 아니군요 1 이니스프리 이니스프리 20.03.08.17:45 159
500 링크 파싱 모듈을 제작하다가 깨달은 점 ㅠㅠ 이니스프리 이니스프리 19.08.27.22:06 160
499 JavaScript에서 Array로 Multipul Evaluation을 사용하면서 어디에 오류가 발생했는지 확인하기 Seia Seia 18.10.21.14:47 162
498 [Python] 수를 뒤집는 두 가지 방법 3 이니스프리 이니스프리 20.02.11.22:24 163