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

최근 여러가지 웹 개발을 하면서 한 가지 문제 상황에 봉착하였습니다. 주어진 이미지를 온전히 보여주면서 배경색 또한 자동으로 적합한 색으로 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차 해결 및 추가] 서버 접속 불가 문제 안내 12 마스터 마스터 24.06.20.15:22 519
공지 [작업 완료] 설 명절 맞이 서버 업데이트 안내 3 마스터 마스터 24.02.11.17:21 2540
공지 [중요] 호스팅 만료와 관련하여 일부 수칙이 변경됩니다. 4 마스터 마스터 23.01.14.02:23 6234
336 [Python] COS Pro 1급 5-4 풀이 이니스프리 이니스프리 20.02.15.16:24 277
335 [Python] 폴더 내 모든 엑셀 파일의 작성자를 출력하기 3 이니스프리 이니스프리 20.07.06.20:33 278
334 [Python] 두 개의 변수를 하나의 for문에서 돌리기 - zip() 활용 이니스프리 이니스프리 20.06.16.14:53 279
333 [Amina] 그누보드 + 아미나 설치 방법 (처음 시작하는 분들을 위한 간단 매뉴얼) 이니스프리 이니스프리 20.10.01.16:48 280
332 트래픽 절감 관련 모 커뮤니티 사이트의 회의 결과 이니스프리 이니스프리 24.05.15.16:51 281
331 [특가] 오늘 하루, TRON G41마우스 19,800원 특가 1 image 하루살이 title: 황금 서버 (30일)하루살이 17.02.27.13:00 282
330 php8.0 대응 라이믹스 오류 해결법 NUBE title: 크롬NUBE 21.03.08.11:39 285
329 [할인정보] 트렌드마이크로 맥시멈 시큐리티 80% 할인! image 이니스프리 이니스프리 17.01.31.18:38 285
328 [할인정보] Bullguard 백신 - 발렌타인데이 70% 할인 이벤트! 3 image 이니스프리 이니스프리 17.02.09.22:42 286
327 [할인정보] 더페이스샵 1월 멤버십데이 (오늘부터!) 1 image 이니스프리 이니스프리 17.01.02.10:19 286
326 (펌) 앱코, 감성초월 레트로 키보드 K850 & K830 마지막 하루!! 1 image 하루살이 title: 황금 서버 (30일)하루살이 17.02.28.00:41 291
325 [Python] clint를 이용한 requests에서의 다운로드 프로그레스바 이니스프리 이니스프리 20.05.29.14:53 292
324 [Python Requests] multiple cookies를 다루기 - "There are multiple cookies with name python" 에러 처리 이니스프리 이니스프리 23.08.22.01:40 294
323 [건강/의학] 냄새 없애고 세균 죽이는 양치법. 1 image death death 17.01.25.21:18 298
322 하루에 포인트를 많이 쌓는 법 3 image title: 은메달도다 17.01.12.16:02 299
JavaScript와 Canvas로 이미지의 배경값을 자동으로 산출하기 Seia Seia 20.09.12.06:37 300
320 [Requests] r.text vs r.content 차이 이니스프리 이니스프리 19.12.27.22:40 300
319 [Python] URL에서 파일을 다운받지 않고 파일용량를 알아내는 방법 3 이니스프리 이니스프리 20.05.13.21:01 300
318 [할인정보] Emsisoft 안티멀웨어 할인! 이니스프리 이니스프리 17.02.23.23:13 301
317 [Python] 쿠팡 크롤링할 때 소소한 팁 이니스프리 이니스프리 24.05.02.21:50 304