Dropbox lanzó recientemente Lepton ( GitHub ), un método que comprime sin pérdidas las imágenes JPEG de ida y vuelta, ahorrando un promedio del 22%.
Debido al principio del casillero , no se puede garantizar que ningún algoritmo de compresión general genere un archivo más pequeño ( general porque no se aplica a entradas restringidas a un formato específico). Lepton explota las características comunes de los archivos JPEG, que si se subvierten, podrían encasillarlo para producir un archivo más grande que la fuente.
Requisitos
Escribe un programa que genere:
- Una imagen JPEG / JFIF válida,
- con un tamaño entre 0.5 MB y 1 MB,
- no menor a 256 × 256 px,
- no más grande que 4096 × 4096 px,
- reconocible por Lepton (puede "comprimir" con éxito una
.lep
imagen), y - descomprime a un idéntico
.jpg
(como la entrada). APPx
,COM
y otros metadatos, las secciones de marcador no gráficas están restringidas en el JPEG (inyectar cantidades arbitrarias de bytes aleatorios en la imagen para aproximar asintóticamente la compresión 1: 1 es poco convincente).- se permite un
APP0
marcador JFIF pero no se permite ninguna miniatura (debe tener exactamente 16 bytes) - tl; dr Si no está insertando metadatos intencionalmente en un segmento EXIF y deshabilita cualquier tipo de miniatura que la biblioteca de idiomas de su elección desea poner en la imagen, debería estar bien.
- se permite un
Publique el código y la imagen.
Si quieres escribir un programa que produzca un imagen de Lepton que cuando se convierte produce un JPEG que cumple con los criterios, está bien. Debe permanecer idéntico a través de arbitrariamente muchos ciclos JPEG → Lepton → JPEG → ...
Puntuación
El tamaño de byte de la imagen de Lepton dividido por la imagen JPEG de origen. Mayor (peor compresión de Lepton) es mejor. Ejecute Lepton con banderas e interruptores predeterminados.
Obteniendo Lepton
Un curso intensivo de 5 segundos para construir Lepton:
git clone https://github.com/dropbox/lepton.git
cd lepton
./autogen.sh && ./configure && make
# fish shell: ./autogen.sh ;and ./configure ;and make
Entonces ./lepton --help
debería decirte cosas.