[JavaScript] 자바스크립트에서 이미지의 RGBA 값 확인하기

2022. 7. 27. 22:30Program/JavaScript

207_자바스크립트에서 이미지의 RGBA 값 확인하기

[적용]

  • 마우스가 가리키는 이미지의 화소 정보를 확인하고 싶을 때
  • 이미지에 포함된 색 정보를 확인하고 싶을 때

[내용]

getImageData()를 사용해 마우스 커서가 가리키는 위치의 색 정보를 구할 수 있다.

캔버스 요소를 mousemove 이벤트로 감시하여 마우스 커서의 좌표를 kayerX와 layerY 로 가져온다.

getImagedata()의 첫 번째와 두 번쨰 인수에 해당 좌표를 할당하여 화소의 배열을 가져올 수 있다.

화소 정보는 CSS의 rgba()를 통해 표시한다.

 

HTML                                                                                                                                                              index.html

<body>
    <canvas id="my-canvas" width="100" height="120"></canvas>
    <p class="log"></p>
</body>

JavaScript                                                                                                                                                          main.js

// 캔버스 요소 참조
const canvas = document.querySelector('#my-canvas');
// 콘텍스트 가져오기
const context = canvas.getContext('2d');

// Image 인스턴스 생성
const img = new Image();
// 이미지 로딩 후 처리
img.onload = () => {
    // 콘텍스트로 캔버스에 그리기
    context.drawImage(img, 0, 0);
};
// 이미지 로딩 시작
img.src = 'sample.jpg';

// 마우스 이동 시
canvas.addEventListener('mousemove', (event) => {
    // 마우스 좌표 가져오기
    const x = event.layerX;
    const y = event.layerY;
    // imageData 가져오기
    const imageData = context.getImageData(x, y, 1, 1);
    // 화소 배열 가져오기
    const data = imageData.data;
    const r = data[0];  // 빨
    const g = data[1];  // 녹
    const b = data[2];  // 파
    const a = data[3];  // 알파
    // 문자열로 색 정보 다루기
    const color = `rgba(${r}, ${g}, ${b}, ${a})`;
    
    const el = document.querySelector('.log');
    // 배경색 지정
    el.style.background = color;
    // 정보를 문자로 표시
    el.textContent = color;
});

 

실행결과

 

 


 

 

 

 

 

참조 :
실무에 바로 적용하는 자바스크립트 코드레시피 278
아케다 야스노부, 카노 타케시 지음 / 이춘혁 옮김