[javascript] Cropper.js를 사용하여 이미지의 콘트라스트 조정하기

이미지 처리는 웹 개발에서 매우 중요한 부분입니다. Cropper.js는 이미지 편집을 손쉽게 구현할 수 있는 자바스크립트 라이브러리입니다. 이번 글에서는 Cropper.js를 사용하여 이미지의 콘트라스트를 조정하는 방법에 대해 알아보겠습니다.

Cropper.js란?

Cropper.js는 범용적인 이미지 자르기(크롭), 회전, 확대 및 축소 기능을 제공하는 강력한 라이브러리입니다. 사용자가 이미지를 선택하고 원하는 부분을 자를 수 있도록 인터페이스를 제공하며, 자주 사용되는 작업을 간편하게 처리할 수 있습니다.

이미지 콘트라스트 조정하기

이미지의 콘트라스트를 조정하는 경우, 주로 밝기와 명암의 강도를 변경하게 됩니다. Cropper.js를 사용하면 이미지를 자르고 회전시킬 수 있기 때문에 이미지를 여러 부분으로 나누어 각각 따로 처리할 수도 있습니다.

아래는 Cropper.js를 사용하여 이미지의 콘트라스트를 조정하는 예제 코드입니다.

const image = document.getElementById('image');
const cropper = new Cropper(image, {
  aspectRatio: 16 / 9,
  viewMode: 1,
  zoomable: false,
  crop(event) {
    const canvas = cropper.getCroppedCanvas();
    const context = canvas.getContext('2d');

    // 이미지 콘트라스트 조정
    const imageData = context.getImageData(0, 0, canvas.width, canvas.height);
    const data = imageData.data;

    for (let i = 0; i < data.length; i += 4) {
      const contrast = 50; // 콘트라스트 강도 조절
      const r = data[i];
      const g = data[i + 1];
      const b = data[i + 2];

      const factor = (259 * (contrast + 255)) / (255 * (259 - contrast));
      data[i] = factor * (r - 128) + 128;
      data[i + 1] = factor * (g - 128) + 128;
      data[i + 2] = factor * (b - 128) + 128;
    }

    context.putImageData(imageData, 0, 0);
  },
});

위의 코드에서 image는 이미지 엘리먼트를 나타내는 변수입니다. Cropper.js의 crop 이벤트 핸들러에서는 이미지를 자르고 회전한 뒤, 콘트라스트 조정을 수행합니다.

getImageData를 사용하여 캔버스의 픽셀 데이터를 가져오고, 가져온 데이터를 순회하며 각 픽셀의 콘트라스트를 조절합니다. 이 예제에서는 콘트라스트 강도를 50으로 설정하였습니다.

putImageData를 사용하여 조정된 이미지 데이터를 캔버스에 다시 그립니다.

결론

이미지 편집은 사용자 경험 개선에 있어서 중요한 요소 중 하나입니다. Cropper.js를 사용하면 이미지 자르기뿐만 아니라 회전, 확대/축소, 그리고 콘트라스트 조정까지 손쉽게 구현할 수 있습니다.

이미지 콘트라스트 조정을 통해 사용자에게 더욱 직관적인 이미지 표현을 제공하고 웹 애플리케이션을 더욱 흥미롭게 만들어보세요.

참고 문서: Cropper.js 공식 문서