[javascript] Cropper.js를 사용하여 이미지를 반전시키는 방법

먼저, Cropper.js와 필요한 HTML 요소를 포함한 웹 페이지를 만듭니다.

<!DOCTYPE html>
<html>
<head>
  <title>Cropper.js를 사용하여 이미지 반전하기</title>
  <link rel="stylesheet" href="https://unpkg.com/cropperjs/dist/cropper.css">
</head>
<body>
  <h1>이미지 반전</h1>
  <input type="file" id="imageInput">
  <button onclick="invertImage()">이미지 반전</button>
  <br>
  <img id="image" src="" alt="이미지">
  <script src="https://unpkg.com/cropperjs/dist/cropper.js"></script>
  <script src="app.js"></script>
</body>
</html>

다음으로, JavaScript 코드를 작성하여 이미지를 반전시킵니다. app.js 파일을 만들고 아래의 코드를 추가합니다.

// 이미지 선택 시 호출되는 함수
function handleImageSelect(event) {
  const file = event.target.files[0];
  const reader = new FileReader();
  
  reader.onload = function (event) {
    const img = document.getElementById('image');
    img.src = event.target.result;
    
    // 이미지가 로드된 후에 Cropper.js 인스턴스를 생성합니다.
    const cropper = new Cropper(img, {
      viewMode: 1,
      dragMode: 'move',
      aspectRatio: NaN,
      guides: false,
      responsive: true,
      autoCropArea: 0.8,
      movable: false,
      rotatable: true,
      scalable: true,
      zoomable: false,
      zoomOnTouch: false,
      zoomOnWheel: false,
      cropBoxResizable: false,
    });
  };

  reader.readAsDataURL(file);
}

// 이미지 반전 함수
function invertImage() {
  const image = document.getElementById('image');
  const canvas = document.createElement('canvas');
  const context = canvas.getContext('2d');

  canvas.width = image.width;
  canvas.height = image.height;
  
  // 이미지를 캔버스에 그립니다.
  context.drawImage(image, 0, 0);

  // 캔버스의 이미지 데이터를 가져옵니다.
  const imageData = context.getImageData(0, 0, canvas.width, canvas.height);
  const data = imageData.data;

  // 이미지 데이터를 반전시킵니다.
  for (let i = 0; i < data.length; i += 4) {
    data[i] = 255 - data[i]; // 빨간 색상 반전
    data[i + 1] = 255 - data[i + 1]; // 초록 색상 반전
    data[i + 2] = 255 - data[i + 2]; // 파란 색상 반전
  }

  // 변경된 이미지 데이터를 캔버스에 다시 그립니다.
  context.putImageData(imageData, 0, 0);

  // 반전된 이미지를 화면에 보여줍니다.
  image.src = canvas.toDataURL();
}

// 이미지 선택 이벤트를 등록합니다.
const imageInput = document.getElementById('imageInput');
imageInput.addEventListener('change', handleImageSelect);

위의 코드를 사용하여 이미지를 반전시킬 수 있습니다. 웹 페이지를 열고 이미지 파일을 선택한 후 ‘이미지 반전’ 버튼을 클릭하면 이미지가 반전되어 화면에 표시됩니다.