들어가기

NodeJS에서 파일을 업로드 하기 위해 multer라는 미들웨어를 사용한다. 보통 이미지 파일을 많이 업로드할 것이다. 이 때 이런 이미지 파일들의 사이즈를 조절하고 썸네일을 만드는 작업을 하기 위해 gm이란 미들웨어를 사용해보자

Document : https://aheckmann.github.io/gm/docs.html

설치 및 적용

먼저 gm을 사용하기 위해선 GraphicsMagick 이나 ImageMagick 을 설치해야한다

for Mac
$ brew install imagemagick

나는 brew를 이용하여 imagemagick으로 설치하였다

ImageMagick?
이미지 파일을 생성,수정 등의 작업하기 위한 오픈소스 소프트웨어

다음으로 gm 미들웨어를 설치해주자

yarn add gm

마지막으로 gm을 사용할 파일에 import 해주면 된다

const gm = require("gm").subClass({ imageMagick: true });

Resizing

const gm = require("gm").subClass({ imageMagick: true });

gm(FILE_URL)
    .resize(_width,_height)
    .write(_output_url, cb)  // 파일 생성
// callback함수는 err를 인자로 받는다

이렇게 하면 기본의 FILE_URL의 파일을 resize 해서 output_url 로 생성해준다

만약 기본의 파일을 삭제하고 싶다면 noProfile()함수를 써주면 된다

const gm = require("gm").subClass({ imageMagick: true });

gm(FILE_URL)
    .resize(_width,_height)
    .noProfile()  // 소스 파일 제거
    .write(_output_url, cb)  

썸네일

지금와서보면 위의 Resizing이랑 별다를바 없다. 뭐 결국 작은 이미지를 생성해주는 거니깐
(조금의 차이라면 quality 를 설정할 수 있다는 거, 코드가 한줄 간결해지는 것?)

gm(FILE_URL)
.thumb(width, height, outName, quality, callback)
// quality : 0 ~ 100