SourceForge

Portable Network Graphics

PNG Now

Original article you can find here http://pmt.sourceforge.net/pngcrush/

[DOWNLOAD]   [CHANGELOG]

Pngcrush es un optimizador de archivos PNG (Portable Network Graphics). Se puede ejecutar desde una línea de comandos de una ventana de MS-DOS, o desde una línea de comandos UNIX o LINUX.

Su propósito principal es reducir el tamaño de la corriente de datos PNG IDAT probando varios niveles de compresión y métodos de filtro PNG. También se puede utilizar para quitar fragmentos auxiliares no deseados, o añadir ciertos fragmentos incluyendo gAMA, tRNS, iCCP, y fragmentos de texto.

Cuando Pngcrush está estáticamente acoplado al código suministrado zlib, se entiende como inmune al bug zlib-1.1.3 "double-free", ya que por defecto detecta y rechaza cualquier intento de "double-free". Simplemente genera el mensaje "Error de descompresión" y rechaza el archivo.

Pngcrush es una fuente abierta y puede ser utilizada, modificada y redistribuida por cualquier persona sin tener que pagar una cuota. La licencia, incrustada en el archivo pngcrush.c, es equivalente pero no idéntica a la licencia libpng encontrada en el archivo libpng png.h.

El código de la fuente para pngcrush está aquí y los ejecutables binarios, hechos por voluntarios de terceros y los que no siempre están actualizados, están aquí. Pngcrush utiliza libpng y zlib, los cuales están incluidos en esta distribución de la fuente pngcrush. Están ligeramente modificados:

-         pngconf.h de libpng está modificado a "#include pngcrush.h" que se utiliza

para "#define out" las partes no utilizadas de la biblioteca

#define PNG_SETJMP_NOT_SUPPORTED

#define PNG_ABORT ()

para configurar el tamaño del búfer IDAT en un valor más grande, y

-         zlib está modificado para establecer el macro TOO_FAR a 32.767 en deflate.c

Si lo prefieres, puedes compilar solamente pngcrush.c de la distribución de la fuente pngcrush y ejecutarlo con los valores libpng y zlib, que se puede encontrar en la página web de PNG, www.libpng.org/pub/png/. Si lo haces,

-         El fragmento iTXt no será compatible si tu versión de libpng no lo acepta. Libpng comenzará a sostener el fragmento iTXt por defecto con la versión 1.4.0.

-         pngcrush será vulnerable a diversas condiciones de overflow que se fijaron en agosto de 2004, si utilizas una versión libpng sin parchear anterior a la versión 1.2.7 / 1.0.17.

-         pngcrush será vulnerable al bug zlib-1.1.3 double-free, si enlazas pngcrush con zlib-1.1.3 y una versión de libpng como cualquiera 1.0.x que no tiene PNG_USER_MEM_SUPPORTED habilitado.

-         TOO_FAR será 4096 en lugar de 32.767 en deflate.c, que conducirá a los archivos un poco más grandes y la ejecución ligeramente más rápida.

-         Tampoco serás capaz de leer los archivos erróneos PNG con "Demasiados IDAT's".

Binarios precompilados para Windows (se ejecuta en la ventana de MS-DOS, hecha bajo DJGPP) y plataformas RISCOS (todos quizá no actualizados) están aquí

Existe una bifurcación del desarrollo de pngcrush, por Cosmin Truta, con un conjunto de características ligeramente diferentes y con el espacio de búsqueda. Ver http://www.cs.toronto.edu/~cosmin/pngtech/optipng/ "

Pngcrush es una aplicación de línea de comandos. Si prefieres una interfaz gráfica de usuario GUI, varias están disponibles, incluyendo estas que han incrustado pngcrush junto con otros compresores y optimizadores de imagen de línea de comandos:

-         ImageOptim para Macs, libre, licencia GPLv2

-         Trimage para Linux, Windows, Mac, libre, licencia MIT

El autor de pngcrush es Glenn Randers-Pehrson, glennrp@users.sf.net



Most popular articles: