[javascript] Paper.js로 영상 편집 및 필터링 효과 추가하기

영상 편집에는 다양한 효과 및 필터링을 추가하여 더욱 흥미로운 결과물을 만들 수 있습니다. 이번 글에서는 JavaScript 기반의 그래픽 라이브러리인 Paper.js를 사용하여 영상에 효과 및 필터링을 추가하는 방법에 대해 알아보겠습니다.

1. Paper.js 소개

Paper.js는 HTML5 Canvas를 기반으로 하는 벡터 그래픽 라이브러리로, 그래픽 요소를 쉽게 그릴 수 있도록 도와줍니다. Path, Shape, Group 등 다양한 그래픽 요소를 생성하고 조작할 수 있으며, 애니메이션 및 상호작용 기능도 제공합니다.

Paper.js 공식 사이트에서 라이브러리를 다운로드하고 프로젝트에 추가한 후, 아래와 같이 HTML 파일에 스크립트를 추가하여 Paper.js를 사용할 수 있습니다.

<script src="paper.js"></script>

2. 영상 불러오기

Paper.js에서 영상을 불러오기 위해서는 HTML5의 <video> 태그를 사용합니다. 아래의 코드는 <video> 태그를 이용하여 ‘video’ ID를 가진 영상을 불러오는 예시입니다.

<video id="video" src="video.mp4"></video>

3. Canvas 생성하기

Paper.js에서는 그래픽을 그릴 수 있는 <canvas> 요소를 생성해야 합니다. 아래의 코드는 Paper.js를 초기화하고 ‘canvas’ ID를 가진 요소를 캔버스로 설정하는 예시입니다.

paper.setup('canvas');

4. 영상 그리기

Paper.js에서는 <canvas>를 이용하여 영상을 그릴 수 있습니다. 아래의 코드는 ‘canvas’ 캔버스에 영상을 그리는 예시입니다.

var video = document.getElementById('video');
var canvas = document.getElementById('canvas');

function draw() {
  canvas.getContext('2d').drawImage(video, 0, 0, canvas.width, canvas.height);
}

video.addEventListener('play', function() {
  setInterval(draw, 10);
});

5. 필터링 효과 추가하기

Paper.js는 다양한 필터링 효과를 제공합니다. 아래의 코드는 ‘canvas’ 캔버스에 흑백 필터링 효과를 추가하는 예시입니다.

var raster = new paper.Raster('canvas');
raster.onLoad = function() {
  this.filters = [new paper.ColorMatrixFilter([
    0.2989, 0.587, 0.114, 0, 0,
    0.2989, 0.587, 0.114, 0, 0,
    0.2989, 0.587, 0.114, 0, 0,
    0, 0, 0, 1, 0
  ])];
  this.applyFilters();
};

위의 코드에서는 paper.Raster를 사용하여 ‘canvas’ 캔버스에 있는 영상을 불러오고, paper.ColorMatrixFilter를 사용하여 흑백 필터링 효과를 추가합니다. this.applyFilters() 메서드를 호출하여 필터를 적용합니다.

Paper.js의 다른 필터링 효과를 사용하려면 공식 문서를 참조하시기 바랍니다.

6. 마무리

Paper.js를 사용하여 영상 편집 및 필터링을 구현하는 방법을 알아보았습니다. Paper.js로는 다양한 그래픽 효과도 추가할 수 있으니, 한 번 써보시는 것을 추천합니다. Paper.js 공식 사이트의 문서와 예제를 참고하면 더욱 다양한 작업을 수행할 수 있을 것입니다.

Paper.js 공식 사이트: https://paperjs.org/

참고 문서: https://paperjs.org/reference/