이미지 압축
Views
18
Votes
0
주요 특징
- files 테이블에 첨부하는 이미지 파일을 압축 합니다.
- 압축 대상: jpg(jpeg), png, gif, svg, webp
- 효과: jpg 이미지는 퀄리티 85로 변환하고 다른 이미지는 무손실이나 손실이 거의 없는 수준에서 압축됩니다.
작동 방식
- optimize old images: 이미 첨부된 과거 파일을 대상 (수동)
- insert trigger (require): 첨부하는 신규 파일을 대상 (자동)
이미지인 파일이 첨부 완료되면 압축을 실행합니다.
압축에 성공하면 덮어씌우고 용량을 기록, 압축에 실패했다면 건너뜁니다.
설치 요구조건
- Rhymix
- 다음 명령어를 실행 가능해야 합니다: (일반 웹 호스팅 사용 불가!)
composer require spatie/image-optimizer (modules/imgopt 경로에서 실행, 설치 링크, 위 캡쳐 참조)- Ubuntu
sudo apt-get install jpegoptim optipng pngquant gifsicle webp
sudo npm install -g svgo - Fedora/RHEL/CentOS
sudo dnf install epel-release
sudo dnf install jpegoptim optipng pngquant gifsicle libwebp-tools
sudo npm install -g svgo - MacOS
brew install jpegoptim optipng pngquant gifsicle webp
npm install -g svgo
- Ubuntu
매뉴얼 (=관리자 화면)
캡쳐에 나온 순서대로 서술하겠습니다.
- test optimize: 님의 서버에서 이미지 압축이 작동하는지 테스트 합니다.
- optimize old images: 이미 첨부된 과거 파일을 압축합니다.
숫자 값을 20, endless loop 체크해서 optimize 버튼을 누르면 최근 첨부된 이미지를 시작으로 20개 단위로 압축합니다.
중간에 오류가 나거나 브라우저 탭을 껐다면 다시 endless loop 체크해서 실행하면 됩니다. - insert trigger: 새로 첨부되는 이미지 파일이 압축됩니다.
- logs
- optimize old images: 의해 절약된 용량
- by trigger (file.insertFile): 의해 절약된 용량
- bi widget (or test optimize): 추가 기능 개발하다가 의미 없게됨.
- create table
- 압축 결과를 DB 에 기록합니다.
- 통계가 필요없다면 테이블을 생성하지 않아도 됩니다.
- InnoDB, MyISAM 둘 중 하나를 선택할 수 있습니다.
파일 업로드가 빈번하면 InnoDB 형식을 추천합니다.
참고로 이 사이트에는 MyISAM 선택 했습니다.
- config (optional)
disable_functions 옵션으로 php-fpm 에서 proc_open 등의 명령어를 제한할 경우 이 옵션이 필요합니다.
curl 받는 내부 아이피를 ip.txt 파일을 생성 및 작성합니다. (ip.sample.txt 참조)
라이센스
- xetown: https://xetown.com/download/1765105
- GPL v2
- https://github.com/spatie/image-optimizer - The MIT License (MIT). Please see License File for more information.