이번 포스트에서는 Fabric.js
를 사용하여 이미지를 로드하고, 사용자가 원하는 부분을 크롭하는 방법에 대해 알아보겠습니다.
필요한 패키지 설치하기
먼저, Fabric.js
를 사용하기 위해 해당 패키지를 설치해야 합니다. 다음 명령어를 사용하여 Fabric.js
를 설치합니다.
npm install fabric
이미지 로드하기
이미지를 로드하기 위해서는 fabric.Image.fromURL()
메소드를 사용합니다. 이 메소드를 사용하여 원하는 이미지를 로드할 수 있습니다. 아래 예제에서는 example.jpg
라는 이미지를 로드합니다.
var canvas = new fabric.Canvas('canvas');
fabric.Image.fromURL('example.jpg', function(img) {
canvas.add(img);
});
로드한 이미지는 img
변수에 저장되며, canvas.add()
메소드를 통해 캔버스에 추가합니다.
이미지 크롭하기
이미지를 크롭하기 위해서는 fabric.Image
객체의 setCoords()
메소드를 사용하여 이미지 영역을 선택하고, cropper
클래스로 선택된 영역을 감싸는 사각형을 그립니다. 그 후 canvas.toDataURL()
메소드를 사용하여 선택된 부분을 이미지로 저장할 수 있습니다.
var cropper;
canvas.on('mouse:down', function(event) {
var pointer = canvas.getPointer(event.e);
cropper = new fabric.Rect({
left: pointer.x,
top: pointer.y,
width: 0,
height: 0,
fill: 'rgba(0,0,0,0.3)',
stroke: 'black',
strokeWidth: 2,
});
canvas.add(cropper);
});
canvas.on('mouse:move', function(event) {
if (!cropper) return;
var pointer = canvas.getPointer(event.e);
cropper.set({
width: pointer.x - cropper.left,
height: pointer.y - cropper.top
});
canvas.renderAll();
});
canvas.on('mouse:up', function(event) {
var imageData = canvas.toDataURL({
left: cropper.left,
top: cropper.top,
width: cropper.width,
height: cropper.height
});
var croppedImage = new Image();
croppedImage.src = imageData;
document.body.appendChild(croppedImage);
});
위 코드에서는 마우스 이벤트를 사용하여 사용자가 이미지 영역을 선택할 수 있도록 합니다. mouse:down
이벤트가 발생하면 해당 위치를 기준으로 cropper
객체를 생성하고 추가합니다. mouse:move
이벤트가 발생하면 마우스 이동에 따라 cropper
객체의 크기를 조절합니다. mouse:up
이벤트가 발생하면 canvas.toDataURL()
메소드를 사용하여 선택된 부분을 이미지로 저장하고, 결과 이미지를 화면에 표시합니다.
이제 Fabric.js를 사용하여 이미지를 로드하고 부분을 크롭하는 방법을 알게 되었습니다. 자세한 내용은 Fabric.js 공식 문서를 참고하시기 바랍니다.