Necesito reducir el tamaño de mi biblioteca de fotos, así que naturalmente quiero comprimirlas. Muchas de ellas no son del todo idénticas, pero sí muy similares (tomas posteriores de la misma escena). ¿Existe algún algoritmo de compresión que aproveche este hecho para comprimir eficazmente estas imágenes? 7zip (LZMA) es inútil.
Respuesta1
Podrías intentarloPaquete 8(fp8_v2.zip). Lo probé yo mismo en 1440 imágenes PNG similares y luego nuevamente en 111 imágenes JPG similares. Aquí están los resultados.
- 1440 archivos PNG, 28.631.615 bytes => 2.058.653 bytes comprimidos
- 111 archivos JPG, 15.003.820 bytes => 489.096 bytes comprimidos
La compresión de los archivos PNG tomó aproximadamente 8 minutos y 550 MB de memoria cuando se usó:
fp8_v2.exe -7 images *.png
La compresión de los archivos JPG tomó aproximadamente 5 minutos y 125 MB de memoria cuando se usó:
fp8_v2.exe -5 images image12*.jpg
Ver también:prueba de compresión de imágenes jpg sin pérdidas
Respuesta2
Aquí hay una solución simple que no funciona para fotos, pero puede funcionar si uno tiene varias imágenes con grandes áreas idénticas píxel por píxel: guarde las imágenes en un formato descomprimido como BMP (no PNG o GIF) y luego TAR y comprímalas. con un compresor decente como XZ, por ejemplo en Linux con algo como
tar -c myDirectory | xz -9 >myDirectory.tar.xz
En lugar de TAR y XZ, se puede utilizar 7-Zip con la opción "archivo sólido" para obtener aproximadamente el mismo rendimiento. De esta manera pude comprimir 16 capturas de pantalla similares, que ocupaban alrededor de 900 KB cada una cuando se guardaban como archivos PNG separados, en un archivo de 2 MB. La ventaja de esta solución es que utiliza formatos de archivo comunes, por lo que funciona sin instalar software nuevo. (Desafortunadamente, los programas más antiguos e incluso más comunes, GZIP y BZIP2, no me hicieron un buen trabajo, tal vez porque el tamaño de bloque de BZIP2 no se puede configurar para que supere los 900 KB).
Respuesta3
Me imagino que la transformada de Burrows-Wheeler con un codificador aritmético sería ideal para esto, dada una ventana lo suficientemente grande. ¿Qué sucede si configura BZIP2 para usar un tamaño de bloque igual a una pequeña serie de fotos? Será más lento y consumirá más memoria, pero la relación de compresión debería dispararse. ¿Y ya has probado LZMA con bloques de mayor tamaño?
Respuesta4
No es que lo haya visto. Probablemente lo más parecido sería tomar varios archivos JPEG similares y ponerlos en una película MJPEG. También puedes utilizar APNG o GIF animados para un propósito similar.
Sin embargo, no estoy seguro de qué tan bien funcionaría y parece que ya estás hablando de capturas de pantalla de películas, por lo que volver a empaquetarlas en un archivo de película suena... contraproducente.
Tal vez una mejor manera, si todavía tiene los clips de donde provienen las pantallas, sería simplemente encontrar una herramienta de línea de comando que pueda extraer el fotograma exacto, copiar ese identificador único en un archivo de texto en algún lugar, y luego siempre podrá Vuelva a extraer fácilmente el marco cuando lo necesite.