woonizzooni

gif 파일 크기 줄이기 / gif 해상도 변경하기 본문

MISC

gif 파일 크기 줄이기 / gif 해상도 변경하기

woonizzooni 2019. 11. 23. 18:46

 

 

imagemagick을 이용해서 약 40개의 해상도로 변환을 순차적으로 시도해보니 5분걸린다는 얘기를 듣고,

https://imagemagick.org/script/download.php

https://imagemagick.org/Usage/

 

 

pc에 이미 ffmpeg이 설치되어 있으니 아래와 같이 시도해봄.

> ffmpeg -i giphy1.gif -vf scale=400:-1 -y c.gif

- 원본 : giphy1.gif (800x450, 384KB)

- 결과 : c.gif 400x250, 1,538KB(1.5MB) -_-!!!!

 

ffmpeg 옵션에 손실 압축 옵션 어떻게 집어넣냐 검색해보다가...

https://stackoverflow.com/questions/48472003/ffmpeg-make-gif-file-size-too-big

 

아래 글을 통해

https://kornel.ski/lossygif

giflossy/gifsicle를 알게되고, 이것을 이용해보기로 함.

https://github.com/kohler/gifsicle

https://github.com/kornelski/giflossy/releases/tag/lossy%2F1.82.1

> 다운로드 : https://github.com/kornelski/giflossy/releases/download/lossy%2F1.82.1/gifsicle-1.82.1-lossy.zip

> linux, mac용 바이너리가 구분되어 있음 (windows 미지원, 내 경우 windows10의 우분투 쉘에서 동작해봄)

아래와 같이 39개의 해상도로 시도해본 결과 약 1분 5초 소요됨.

./gifsicle-static -O3 --lossy=80 --resize-width 790 -o d790.gif ../../giphy1.gif 
./gifsicle-static -O3 --lossy=80 --resize-width 780 -o d780.gif ../../giphy1.gif 
./gifsicle-static -O3 --lossy=80 --resize-width 770 -o d770.gif ../../giphy1.gif

...

./gifsicle-static -O3 --lossy=80 --resize-width 410 -o d410.gif ../../giphy1.gif

 

여기에 &로 백그라운드(=병렬)처리로 시도해보니 4~8초내 소요됨.

./gifsicle-static -O3 --lossy=80 --resize-width 790 -o d790.gif ../../giphy1.gif &
./gifsicle-static -O3 --lossy=80 --resize-width 780 -o d780.gif ../../giphy1.gif &

...

./gifsicle-static -O3 --lossy=80 --resize-width 410 -o d410.gif ../../giphy1.gif&

 

시간도 나름(?) 빠르고, 파일 크기도 원본 해상도 그대로일 경우 약 1/2정도 작아지는 것을 확인.

이렇게 해보라고 해야겠군. 

 

 

옵션 설명

-O, --optimize

--lossy[=STRENGTH]

--resize-width W : 이건 뭐 굳이 설명안해도... (이 값만 설정했을 경우 height는 원본 비율에 맞게 자동 설정됨)

 

 

 

[참고]

https://github.com/kornelski/giflossy

https://github.com/kohler/gifsicle

https://www.lcdf.org/gifsicle/man.html

 

Comments