Dropbox는 최근 JPEG 이미지 를 무손실 압축하여 평균 22 %의 비용을 절약하는 Lepton ( GitHub )을 출시했습니다 .
때문에의 비둘기 집 원리 , 어떤 일반적인 압축 알고리즘이 될 수없는 보증 (작은 파일에 결과에 일반적으로 는 특정 형식에 제약 입력에 적용되지 않기 때문에). Lepton은 JPEG에 대한 일반적인 특성을 활용하여 파괴 될 경우 소스보다 큰 파일을 생성 할 수 있습니다.
요구 사항
다음을 생성하는 프로그램을 작성하십시오.
- 유효한 JPEG / JFIF 이미지
- 0.5MB에서 1MB 사이의 크기로
- 256 × 256 픽셀 이상
- 4096 × 4096 픽셀 이하
- Lepton에서 인식 가능 (
.lep
이미지 를 성공적으로 "압축"할 수 있음 ) - (입력 과 동일) 압축을 풉니 다
.jpg
. APPx
,COM
및 기타 메타 데이터의 비 그래픽 마커 섹션은 JPEG에서 제한됩니다 (임의로 1 : 1 압축에 접근하기 위해 임의의 양의 임의 바이트를 이미지에 주입하여 1 : 1 압축이 지연됨).APP0
JFIF 마커는 허용하지만 섬네일 (정확히 16 바이트이어야 함) 허용되지 않습니다- tl; dr 의도적으로 EXIF 세그먼트에 메타 데이터를 넣지 않고 선택한 언어 라이브러리가 이미지에 넣고 자하는 썸네일을 비활성화하면 괜찮습니다.
코드와 이미지를 게시하십시오.
변환 할 때 기준에 맞는 JPEG 를 생성하는 Lepton 이미지 를 생성하는 프로그램을 작성 하려면 괜찮습니다. 임의로 많은 JPEG → Lepton → JPEG → ... 사이클에서 동일하게 유지되어야합니다.
채점
Lepton 이미지의 바이트 크기를 소스 JPEG 이미지로 나눈 값입니다. 높을수록 (Lepton 압축이 나빠질수록) 좋습니다. 기본 플래그 및 스위치와 함께 Lepton을 실행하십시오.
렙턴 얻기
Lepton을 구축하는 5 초의 충돌 과정 :
git clone https://github.com/dropbox/lepton.git
cd lepton
./autogen.sh && ./configure && make
# fish shell: ./autogen.sh ;and ./configure ;and make
그런 다음 ./lepton --help
말해야합니다.