Dropbox ha recentemente rilasciato Lepton ( GitHub ), un metodo che comprime senza perdita di immagini JPEG andata e ritorno, con un risparmio medio del 22%.

A causa del principio pigeonhole , non è possibile garantire che nessun algoritmo di compressione generale dia luogo a un file più piccolo ( generale perché non si applica agli input vincolati a un formato specifico). Lepton sfrutta le caratteristiche comuni dei JPEG che, se sovvertiti, potrebbero rovinarlo per produrre un file più grande della fonte.
Requisiti
Scrivi un programma che genera:
- Un'immagine JPEG / JFIF valida,
- con una dimensione compresa tra 0,5 MB e 1 MB,
- non inferiore a 256 × 256 px,
- non più grande di 4096 × 4096 px,
- riconoscibile da Lepton (può "comprimere" con successo
.lepun'immagine), e - si decomprime in un identico
.jpg(come input). APPx,COMe altri metadati, le sezioni dei marker non grafici sono limitate nel JPEG (l'iniezione di quantità arbitrarie di byte casuali nell'immagine per avvicinarsi asintoticamente alla compressione 1: 1 è scadente.)- è consentito un
APP0marker JFIF ma non è consentita alcuna anteprima (dovrebbe essere esattamente di 16 byte) - tl; dr Se non stai spingendo intenzionalmente i metadati in un segmento EXIF e disabiliti qualsiasi tipo di anteprima che la tua libreria di lingue di tua scelta vuole mettere nell'immagine, dovrebbe essere OK.
- è consentito un
Pubblica il codice e l'immagine.
Se vuoi scrivere un programma che produce un'immagine Lepton che quando convertita produce un JPEG che soddisfa i criteri, va bene. Deve rimanere identico attraverso arbitrariamente molti cicli JPEG → Lepton → JPEG → ....
punteggio
La dimensione in byte dell'immagine Lepton divisa per l'immagine JPEG di origine. Più alto (peggiore compressione di Lepton) è meglio. Esegui Lepton con flag e switch predefiniti.
Ottenere Lepton
Un corso accelerato di 5 secondi per costruire Lepton:
git clone https://github.com/dropbox/lepton.git
cd lepton
./autogen.sh && ./configure && make
# fish shell: ./autogen.sh ;and ./configure ;and make
Quindi ./lepton --helpdovrebbe dirti delle cose.

