[javascript] PhotoSwipe와 연동하여 이미지 파일 압축하기

이미지 파일은 웹 사이트에서 가장 큰 용량을 차지하는 요소 중 하나입니다. 따라서 이미지 파일을 압축하여 용량을 줄이는 것은 웹 페이지의 로딩 속도를 향상시키는 중요한 작업입니다.

PhotoSwipe는 모바일 및 데스크톱에서 사용할 수 있는 JavaScript 라이브러리로, 이미지 갤러리 및 이미지 슬라이더 기능을 제공합니다. 이번 포스트에서는 PhotoSwipe와 함께 이미지 파일을 압축하는 방법을 소개하겠습니다.

1. 이미지 파일 압축 라이브러리 선택

PhotoSwipe를 사용하기 위해 이미지 파일을 압축하기 위한 라이브러리를 선택해야 합니다. 이미지 파일 압축을 위해 널리 사용되는 라이브러리 중 몇 가지를 살펴보겠습니다:

본 포스트에서는 imagemin을 사용하여 이미지 파일을 압축하는 예제를 다루겠습니다.

2. imagemin 설치 및 설정

먼저 imagemin을 설치해야 합니다. 다음 명령어를 사용하여 imagemin을 프로젝트에 추가합니다:

npm install imagemin

설치가 완료되면, imagemin의 설정 파일을 생성합니다. 프로젝트 루트 디렉토리에 imagemin.config.js 파일을 생성하고 다음과 같이 설정합니다:

module.exports = {
  plugins: [
    // 이미지 파일 포맷에 따라 압축 알고리즘을 설정합니다.
    require('imagemin-mozjpeg')(), // JPEG 포맷의 이미지 압축
    require('imagemin-pngquant')(), // PNG 포맷의 이미지 압축
    require('imagemin-gifsicle')() // GIF 포맷의 이미지 압축
  ]
};

3. 이미지 파일 압축 코드 작성

imagemin 라이브러리를 사용하여 이미지 파일을 압축하는 코드를 작성합니다. 예를 들어, PhotoSwipe에서 사용할 이미지 파일을 src 디렉토리에 저장하고 압축된 이미지 파일을 dist 디렉토리에 저장하려면 다음과 같이 코드를 작성할 수 있습니다:

const imagemin = require('imagemin');
const imageminConfig = require('./imagemin.config');

(async () => {
  const files = await imagemin(['src/*.{jpg,png,gif}'], {
    destination: 'dist',
    plugins: imageminConfig.plugins
  });

  console.log('압축된 이미지 파일:', files);
})();

위 코드는 src 디렉토리에 있는 JPEG, PNG, GIF 포맷의 이미지 파일을 dist 디렉토리로 압축합니다. pluginsimagemin.config.js에서 설정한 압축 알고리즘을 사용합니다.

4. PhotoSwipe에 압축된 이미지 파일 사용

imagemin을 통해 압축된 이미지 파일을 사용하기 위해 PhotoSwipe 설정을 수정해야 합니다. 다음은 예시 코드입니다:

const pswpElement = document.querySelectorAll('.pswp')[0];
const items = [
  {
    src: 'dist/image1.jpg',
    w: 1200,
    h: 800
  },
  {
    src: 'dist/image2.jpg',
    w: 800,
    h: 1200
  },
  // ...
];

const options = {
  // PhotoSwipe 옵션 설정
};

const gallery = new PhotoSwipe(pswpElement, PhotoSwipeUI_Default, items, options);
gallery.init();

위 코드에서 src 속성은 dist 디렉토리에 있는 압축된 이미지 파일을 가리킵니다.

마치며

이미지 파일 압축은 웹 사이트의 로딩 속도를 향상시키는 데 중요한 역할을 합니다. 이번 포스트에서는 PhotoSwipe와 연동하여 이미지 파일을 압축하는 방법에 대해 간단하게 소개했습니다. 다양한 이미지 압축 라이브러리를 적용하여 웹 페이지의 성능을 최적화할 수 있습니다.


참고 자료: