Página principal » cómo » ¿Es el formato PNG sin pérdida, ya que tiene un parámetro de compresión?

    ¿Es el formato PNG sin pérdida, ya que tiene un parámetro de compresión?

    Se supone que el formato PNG es un formato sin pérdida, pero cuando guarda una imagen como un archivo PNG, se le pide que elija un nivel de compresión. ¿Esto significa que el formato PNG en realidad no es sin pérdida después de todo? La publicación de preguntas y respuestas de SuperUser de hoy ayuda a aclarar la confusión para un lector curioso.

    La sesión de Preguntas y Respuestas de hoy nos llega por cortesía de SuperUser, una subdivisión de Stack Exchange, un grupo de sitios web de preguntas y respuestas impulsado por la comunidad..

    La pregunta

    Superkser reader pkout quiere saber si la calidad de una imagen PNG se ve afectada por el nivel de compresión elegido:

    Como lo entiendo, los archivos PNG usan compresión sin pérdida. Sin embargo, cuando estoy usando un editor de imágenes como Gimp y trato de guardar una imagen como un archivo PNG, solicita un nivel de compresión entre 0 y 9.

    Si tiene un parámetro de compresión que afecta a la precisión visual de la imagen comprimida, ¿cómo es entonces que PNG no tiene pérdidas? ¿Puede alguien explicarme esto por favor? ¿Obtengo un comportamiento sin pérdidas solo cuando configuro el nivel de compresión en 9?

    ¿Existe una diferencia en la calidad de la imagen según el nivel de compresión que elija??

    La respuesta

    Los colaboradores de SuperUser, LordNeckbeard y jjlin tienen la respuesta para nosotros. En primer lugar, LordNeckbeard:

    PNG está comprimido, pero sin pérdidas

    El nivel de compresión es una compensación entre el tamaño del archivo y la velocidad de codificación / decodificación. Para generalizar demasiado, incluso los formatos que no son de imagen, como FLAC, tienen conceptos similares.

    Diferentes niveles de compresión, misma salida decodificada

    Aunque los tamaños de los archivos son diferentes debido a los diferentes niveles de compresión, la salida descodificada real será idéntica. Puede comparar los hashes MD5 de las salidas descodificadas con ffmpeg usando el muxer MD5. Esto se muestra mejor con algunos ejemplos.

    Crear archivos PNG

    • De forma predeterminada, ffmpeg usará -compression_level 100 para la salida PNG.
    • Una prueba rápida y descuidada mostró que 100 (el nivel de compresión más alto) demoraba aproximadamente tres veces más en codificar y cinco veces más en decodificarse que 0 (el nivel de compresión más bajo) en este ejemplo.

    Comparar el tamaño del archivo

    Decodifica los archivos PNG y muestra los hash MD5

    Como ambos hashes son iguales, puede estar seguro de que las salidas descodificadas (los archivos en bruto sin comprimir) son exactamente iguales.

    Seguido por la respuesta de jjlin:

    PNG es sin pérdidas. Es muy probable que GIMP no utilice la mejor opción de redacción en este caso.

    Piense en ello como calidad de compresión o nivel de compresión. Con una compresión más baja, obtienes un archivo más grande, pero toma menos tiempo producirlo, mientras que con una compresión más alta, obtienes un archivo más pequeño que demora más en producir.

    Normalmente, obtienes rendimientos decrecientes, es decir, no tanto como el tamaño en comparación con el aumento en el tiempo que se tarda en subir a los niveles de compresión más altos, pero depende de ti..


    ¿Tienes algo que agregar a la explicación? Apaga el sonido en los comentarios. ¿Quieres leer más respuestas de otros usuarios de Stack Exchange con experiencia en tecnología? Echa un vistazo a la discusión completa aquí.