webp의 lossless 결과물을 비교해보았다.


 비교해보는 이유는 bmp에서 webp로 바꾼 다음 bmp로 바꿔서 원본이랑 디코딩한 결과물을 비교해보니, 파일이 전혀 바뀌어 져있었다.


 7z h -scrcsha256으로 하여 sha256의 값이 바뀐 것뿐만 아니라, hexeditor로 읽어 본 바이너리 내용물도 바뀌었다.(sha256으로 확인했을때, 다른 것은 당연히 바이너리 내용물이 다르다는 것을 알 수 있다.)


 그래서 진짜 내용물이 손실 없이 되는지 궁금했다.


 먼저 webp에서 인코딩을 이용하고, 다른 프로그램을 이용해서 비교하는기로 했다.


 webp에서 인코딩을 이용하기 위해서 샘플로 나와있는게 있다.[각주:1]


 cwebp을 이용해서 인코딩을 표현할 수 있다.


 libwebp이라고 하여, bin파일과 함께 include 및 라이브러리를 구성할 수 있다.


 PNG을 이용해서 만들어지는 무손실 압축 그래픽인 것에서 webp은 png보다 용량을 적게 할 수 있는걸 확인 했다.



 정말 webp에서 그래픽이 손실이 심할지 궁금해서 확인 하기 위해서 비교 프로그램을 돌리기로 했다.[각주:2]



 libwebp을 다운 받고.[각주:3] 설명에 맞춰서 사용해 보았다.



 cwebp -q 100 -lossless test.bmp -o text.webp


 이렇게 하면, 압축률이 높은 무손실 압축이 된다. 라고 한다.[각주:4] 그래서 이걸 이용해서 압축 했다.


 png와 비교했을 경우. 용량이 약 10%정도 감소되는걸 확인 했다.


 내가 궁금한건 png의 용량 감소가 아닌 내용물의 무손실인지 확인 하는 것이다.


 그래서 bmp으로 추출하는걸 해보았다.


 dwebp -bmp test.webp -o test_1.bmp


 이렇게 해서 나오는 결과물인 test_1.bmp과 test.bmp을 diffimg을 이용해서 제작하도록 했다.


 결과물을 얻기 위해서 test.bmp을 원본으로 하고, test_1.bmp랑 비교하는걸 해보았다.

 결론은 webp에서 lossless는 bmp의 형태가 달라서 그런 것이지.(무압축 bmp으로 나타낸다.) 값이 변화되는건 아닌걸 확인 하였다.


 webp에서 lossless를 이용하면, 확실히 무손실 압축이며, png보다 용량이 10%정도 적어진 파일이 완성된다는 것을 알 수 있게 되었다.


 실수로 cwebp -q 100만을 이용해서 압축하고 푸니, 원본 bmp보다 어두워진 bmp 파일이 만들어 졌다.


 추측하곤데 webp는 명암을 증가 시켜서 화질을 개선하고, 이것을 압축하는 방식인 것 같다.


 맞는진 모르겠지만, lossless에선 확실히 무손실이 된다. 라는걸 알게 되었다.

  1. https://developers.google.com/speed/webp/docs/cwebp (2016-05-25) [본문으로]
  2. https://sourceforge.net/projects/diffimg/(2016-05-25) [본문으로]
  3. https://storage.googleapis.com/downloads.webmproject.org/releases/webp/index.html(2016-05-25) [본문으로]
  4. https://developers.google.com/speed/webp/docs/cwebp#name(2016-05-25) [본문으로]
Posted by JunkMam
,