웹개발 및 최신 테크 소식을 전하는 블로그, 웹이즈프리

HOME > etc

리눅스 png 이미지 파일 압축하기, optipng, pngquant

Last Modified : 2024-01-21 / Created : 2024-01-20
161
View Count
오늘은 리눅스에서 png 파일 압축 방법에 대하여 자세히 알아보겠습니다.




png 이미지 압축하기


최근 많은 수의 png 이미지를 압축하기 위해 몇 가지 방법들을 찾아보았는데요 ~ 많은 툴들이 존재하지만 리눅스 환경에서 비교적 쉽게 가능한 방법을 찾아보다가 아래의 3가지 방법을 사용하는 것이 좋겠다라고 판단하였습니다.

ffmpeg // 리눅스 사용자라면 알만한 유명한 미디어 편집 및 관리 툴
optipng // 무손실 압축이 가능한 png 압축툴
pngquant // 이미지 퀄리티가 낮지만 가장 확실한 압축 방법

다음으로 각각의 방법으로 압축을 해보았으며 그 결과는 다음과 같았습니다. 아래에서 자세히 보시죠!


각각의 png 이미지 압축 결과


위 세 가지 방법을 모두 테스트 해본 결과입니다. 제일 먼저 ffmpeg의 경우입니다.


1. ffmpeg를 사용한 압축


결과부터 얘기하면 png의 경우 ffmpeg를 사용한 이미지 압축의 효과를 거의 거두지 못했습니다. 즉 jpg나 다른 포맷이 아닌 png를 사용할 때 ffmpeg 보다는 다른 방법이 나은 선택이라는 결론입니다. 사실 ffmpeg는 다양한 미디어를 위해 사용하는 툴로써 아무래도 영상 및 음성에 사용하는 것이 좋아보입니다.


2. optipng를 사용한 압축


이 방법의 경우 무손실 압축이 가능하다는 점이 가장 큰 장점입니다. 다만 무손실 방식이므로 압축의 효과를 극대화하길 원한다면 상대적으로 다른 방법을 원하실 수 있습니다. 개인적으로 추천하는 방법으로 무손실 방식이므로 안전하게 압축이 가능하기 때문입니다. 큰 고민없이 많은 파일을 압축해야한다면 이 방법을 추천드리고자 합니다.

아래는 optipng의 간단한 설치 방법입니다.
> apt-get update
> apt-get install optipng

기본적인 압축방법과 옵션을 알아봅니다.

-o0 ~ -o7 // 0부터 7까지 압축 정도를 결정, 7의 경우 가장 압축률이 좋지만 속도가 느림
-out // 압축 후 새로운 이름의 파일 생성

만약 test.png를 압축할 경우 아래와 같이 사용 가능합니다.
> optipng -o1 test.png

압축률이 낮은 -o1 옵션이므로 빠르게 압축됩니다. 만약 -o7로 압축하면 가장 느리게 압축됩니다. 직접 해보니 속도는 많이 느렸지만 실제 o1과 o7의 압축률 차이는 그리 크기 않았으니 참고하세요.


@ optipng 압축 파일명 변경하기
만약 새로운 파일 이름으로 압축하려면 -out 옵션을 사용합니다. 아래는 간단한 예제로 test_o7.jpg 이름의 파일을 생성합니다. 위 스크린샷도 동일하죠.
> optipng -7 -out test_07.png test.png

위 명령어처럼 새로 생성할 파일명은 앞에 그리고 원본 파일을 맨 뒤에 입력해야합니다.


3. pngquant 사용하는 방법


마지막으로 pngquant 사용 방법입니다. 결론부터 얘기하면 큰 이미지 압축이 필요한 경우 이 방법이 가장 확실한 방법입니다. 다만 이미지 손실 크기가 크기 때문에 사용 목적에 따라 적절한 압축 정도를 선택하시기 바랍니다. 아래는 pngquant에 사용 가능한 옵션 및 압축 방법입니다.

--quality=n1-n2 // n1부터 n2 범위의 압축률을 의미. 0부터 100까지 가능
--output // 새로운 파일 이름으로 생성시 사용

실제로 압축하면 용량이 크게 줄어드는데 대신 색도 많이 적어지는 것이 눈에 확연히 드러나게 됩니다. 다만 용량의 경우 압축 효과가 대단히 좋습니다. 저는 개인적으로 이미지를 사용한 영상을 만들거나 크게 퀄리티가 중요하지 않는다면 이 방식을 가장 선호합니다.
> sudo apt-get install pngquant

이제 20-50 입축으로 test2050.png 파일을 생성하여 압축을 해보겠습니다.
> pngquant --quality=20-50 test.png --output test2050.png

이제 새로운 파일이 생성되며 압축이 완료된 것을 확인할 수 있습니다. 이미지마다 차이가 있겠지만 위와 같이 압축한 결과 약 60% ~ 70%의 압축 효과를 얻을 수 있었습니다.


마치면서


여기까지 png 이미지 파일을 리눅스 환경에서 압축하기 위한 다양한 방법들을 알아보았습니다. 각각의 방법들 모두 장점과 단점을 가지고 있기 때문에 원하는 방식에 따라 선택 후 압축하시면 될 것 같습니다. 또한 이미지의 width, height 크기를 줄이는 것 역시 용량을 크게 줄일 수 있는 방법으로 압축 대신 이 방법을 사용하는 것도 괜찮은 선택이 될 수 있습니다.

Previous

윈도우에서 ffmpeg로 여러 이미지를 하나의 영상으로 변환하는 방법

Previous

애드센스 기존 CPC에서 확 달라진 CPM 수익 변화