디지털 시대에 이미지는 우리의 브라우징 경험에서 중요한 역할을 맡고 있다. 그러나 문제는 이러한 이미지가 종종 상당한 대역폭을 차지하여 웹 사이트의 성능에 영향을 줄 수 있다는 것이다. 우리는 이미지 최적화라는 과정을 통해 이미지 크기를 줄여서 이 문제를 해결할 수 있다. 이 포스트에서는 PNG 및 JPG와 같은 이미지 파일을 WebP로 변환하고 Node.js를 사용하여 이미지를 압축하는 방법을 알아본다.
Google에서 개발한 현대적인 이미지 형식인 WebP는 웹 이미지에 대한 우수한 비손실 및 손실 압축을 제공한다. PNG 및 JPG 파일을 WebP로 변환함으로써 이미지 품질을 저하시키지 않고도 더 작은 파일 크기를 얻어 웹 사이트의 로딩 속도를 높일 수 있다.
변환 프로세스를 시작하기 전에 Node.js가 설치되어 있는지 확인해야 한다. 설치되어 있지 않다면 해당 운영 체제에 맞게 다운로드 및 설치한다.
이미지 변환에는 sharp
패키지를 사용하고, 이미지 압축에는 imagemin-webp
패키지를 사용한다.
npm install sharp imagemin imagemin-webp
sharp
모듈을 사용하여 PNG 또는 JPG 이미지를 WebP로 변환한다. 입력 파일을 읽어와 WebP 형식으로 변환하는 방식이다.
const sharp = require('sharp');
sharp('input.png')
.webp()
.toFile('output.webp')
.then(() => console.log('이미지 변환 완료.'))
.catch(err => console.error(err));
이제 imagemin-webp
모듈을 사용하여 변환된 WebP 이미지를 압축해 본다.
const imagemin = require('imagemin');
const imageminWebp = require('imagemin-webp');
(async () => {
await imagemin(['output.webp'], {
destination: 'compressed_images',
plugins: [
imageminWebp({quality: 50})
]
});
console.log('이미지 압축 완료.');
})();
const sharp = require('sharp');
const imagemin = require('imagemin');
const imageminWebp = require('imagemin-webp');
sharp('input.png')
.webp()
.toFile('output.webp')
.then(() => {
(async () => {
await imagemin(['output.webp'], {
destination: 'compressed_images',
plugins: [
imageminWebp({quality: 50})
]
});
console.log('이미지 변환 및 압축 완료.');
})();
})
.catch(err => console.error(err));
이 전체 스크립트는 이미지를 WebP 형식으로 변환하고 압축한다.
Node.js에서 PNG 및 JPG를 WebP로 변환하고 압축하는 효율적인 방법을 알아 보았다. 이를 통해 이미지를 최적화하고 웹사이트의 로딩 시간을 단축하며 더 나은 사용자 경험을 제공할 수 있다. 조금의 연습을 통해 이러한 단계들은 자연스러운 일처럼 익숙해질 것이다.
imagemin-webp
플러그인을 사용하여 압축 수준을 조정할 수 있다.Private NPM Registry의 필요성과 Verdaccio로 구축하는 방법 |
---|
Webpack 설치 방법과 기본 사용 방법 |
Node.js에서 JSON 파일 로딩하는 방법 |
이미지 최적화: Node.js에서 PNG, JPG등을 WebP로 변환 및 압축 |
CloneCoding
한 줄의 코드에서 시작되는 혁신!