2010-04-21 26 views
16

Estoy usando ImageMagick para convertir algunos archivos de un formato a otro. Siempre tuve la impresión de que se suponía que los archivos .png fueran tan grandes/pequeños como .jpg, si no más pequeños, y definitivamente más pequeños que .gif.¿Por qué los archivos '.png' producidos por ImageMagick son mucho más grandes que los archivos '.jpg' y '.gif'?

Sin embargo cuando corro

convert photo.jpg photo.png 

Los archivos Me largo es aproximadamente 6 veces más grande que el original, jpg.
Original jpg es una foto normal de aproximadamente 300x500 px, 52 kb. La salida es una png adecuada de las mismas dimensiones, pero el tamaño es de aproximadamente 307 kb.

¿Alguien sabe lo que está pasando el hack? ¿Estoy haciendo algo mal?

P.S .:

He intentado tanto en Debian y Windows, con los mismos resultados.

PPS:

también cuando agrego cambiar el tamaño de esta opción de cambiar el tamaño y a 10.000 x 10000. La conversión y cambiar el tamaño a jpg tarda unos pocos segundos, pero funciona, si lo hago de la misma png, me jsut strt funcionamiento de la memoria por completo

PPA: Para las personas que mantienen esta pregunta marcado como duplicado de PNG vs. GIF vs. JPEG vs. SVG - When best to use?. Por favor, lea cuidadosamente y entienda la pregunta. No es un duplicado, ya que esta pregunta pregunta 'acerca de los archivos producidos mediante programación con aplicaciones específicas (magia de imágenes). La pregunta que marca como duplicado es preguntar qué formato de imagen es mejor usar en la web. Dos preguntas DIFERENTES.

+1

Tal vez lo llame ** ¿Cómo puedo generar PNG más pequeños desde ImageMagick? ** – sam

+0

nah .. Quería saber por qué, una vez que sé 'el por qué 'del problema, generalmente puedo descubrir la' solución de cómo ':-) – konung

+1

Buscar PNG indexado, su tamaño será comparable a GIF (ya que GIF es i ndexed). – user

Respuesta

12

JPG es un algoritmo lossy compression mientras que PNG es lossless one.

Este hecho solo (en general) hará que las imágenes JPG sean más pequeñas que las PNG. Puede modificar las relaciones de compresión para cada formato, por lo que también podría ser que no esté comprimiendo sus archivos PNG tanto como sus archivos JPG.

Para guardar imágenes fotográficas como JPG generalmente se producirá un archivo más pequeño que PNG ya que hay más ruido o aleatoriedad en la imagen para que la compresión funcione. Las imágenes creadas por herramientas de arte gráfico tenderán a tener bordes más duros y áreas de color sólido que se comprimirán mejor en PNG.

Si tiene texto en su imagen, entonces PNG producirá una imagen de mejor calidad ya que los bordes más duros de los caracteres no se verán borrosos como lo serían si se utilizara JPG.

GIF es más pequeño porque está basado en una paleta de colores (de 256 colores) en lugar de los valores RGB separados para cada píxel (o grupo de píxeles) en JPG y PNG.

+0

Chris, gracias por una rápida respuesta. No he hecho procesamiento de imágenes programáticas antes y, viniendo de productos de GUI como Photoshop y Paintshop, estoy acostumbrado a tener pngs más pequeños, ya que usan paletas optimizadas por defecto. ¿Hay alguna manera de que imagemagick reduzca la calidad para hacer la conversión a png más rápido? – konung

+0

@Nick - No conozco Imagemagick, así que no puedo decirlo con certeza, pero debería haber un botón de "opciones" en algún lugar, ya sea en el cuadro de diálogo guardar o en las preferencias. – ChrisF

+0

No hay idea sobre imagemagick pero cualquier buen editor de imágenes debe tener una función que reduzca la cantidad de colores utilizados en la imagen. – michalburger1

5

El formato de archivo .jpeg es un formato con pérdida, arroja información. Lo que hace buenas relaciones de compresión. El formato de archivo .gif no tiene pérdida, pero pierde otra información, solo admite 256 colores. El formato de archivo .png no tiene pérdida y conserva el rango de color.

2

Depende del tipo de imagen. La compresión con pérdida de JPEG funciona muy bien en imágenes con muchos degradados de color (es decir, fotos).

Pruébalo en una imagen compuesta por áreas con el mismo color separado por bordes filosos (las capturas de pantalla son buenas, a menos que muestren un fondo de escritorio fotográfico, y los elegantes bordes de las ventanas y la barra de tareas de Vista y Windows 7 también tienden a ensuciar Esto arriba). JPEG es malo en ese tipo de cosas, y probablemente encontrará PNG para comprimir mejor (probablemente también mejor que GIF).

9

El formato PNG puede proporcionar imágenes de 24 bits por píxel u 8 bits por píxel. JPG es un formato de 24 bits, pero usa compresión con pérdida para reducir significativamente el tamaño del archivo. PNG y GIF usan compresión sin pérdida, pero GIF solo funciona con 8 bits, por lo que requiere que la imagen tenga 256 colores o menos; esto a menudo da como resultado una imagen más granulosa.

Pruebe las opciones -colors y -dither en ImageMagick para reducir el número de bits en su salida PNG. En ese punto, debería ser comparable al tamaño del archivo GIF. Si necesita reducirlo aún más, hay utilidades para optimizar el PNG.

+0

Marque gracias por los consejos, pero incluso -colors 254 por png, produce e imagen más grande que jpeg. Creo que tendré que guardar todo como jpgs. Gracias – konung

+0

@Nick, una pregunta: ¿sus gifs también son más grandes que los jpgs? Si es así, probablemente hayas tomado la decisión correcta. Png podría ser más pequeño que gif, pero no por un gran margen. –

+0

Sí, los gifs son definitivamente más grandes, no es de extrañar, siempre pensé que el png produciría mejores resultados. Pero como realmente no me esfuerzo por la calidad aquí, sino por un tamaño más pequeño, es el jpg. Gracias – konung

16

La clave a tener en cuenta aquí es que cada formato de archivo de imagen es mejor para fines específicos.

JPEG son las siglas de “Joint Photographic Grupo de Expertos.” Este derecho no debería decir que el formato de archivo .JPG está optimizado para fotografías. No funciona tan bien para line-art, logotipos, degradados o mosaico/fondos con dibujos, y similares. Los artefactos DCT (Discreet Cosine Transform) de JPJ (los artefactos "en bloque" que todos conocemos y aborrecemos) son mucho más notables con las líneas de arte y los logotipos que con las fotos.

PNG ha reemplazado a GIF por todo lo que GIF alguna vez fue bueno, excepto uno, y eso solo porque no ha surgido un estándar claro: animaciones. Los archivos animados .GIF son bien conocidos en la Web. Hay dos estándares en competencia para .PNGs animados: APNG y MNG.

APNG es compatible con la mayoría de navegadores modernos, y también es completamente compatible con versiones anteriores (la extensión de archivo es .PNG, no .APNG, y si cualquier programa puede mostrar .PNG pero no sabe que APNG está "alimentado" APNG, mostrará una imagen del suplente de la elección del desarrollador, o el primer cuadro de la animación si no se proporcionó dicho sustituto; en lo que respecta al programa anterior, es simplemente un .PNG de fotograma único ordinario. con esa imagen en ella, el resto se ignora de forma segura). Gecko (FF, , etc.) y Presto (Opera) lo admiten de forma nativa, y Google Chrome (con Webkit) puede hacerlo con un complemento.

MNG tiene el respaldo del equipo de desarrollo de formato PNG real, pero tiene su propio formato y no es compatible con versiones anteriores, pero es más potente y flexible. En este momento, solo los navegadores basados ​​en KHTML (Konquerer) lo admiten: no Trident (IE), Gecko, Webkit (Chrome, Chromium, Safari), ni Presto.

PNG hace todo (excepto animaciones a menos que se mejore con APNG) que hace GIF, y mejor. Siendo todo lo demás igual, un .PNG casi siempre será más pequeño que un .GIF con la misma resolución y profundidad de bit. Al igual que .GIF, .PNG puede admitir profundidades de color de hasta 8 bits por píxel en el modo de color indexado (paleta), pero a diferencia de .GIF (pero como .JPEG) también admite el modo de color directo a 24 bits por píxel.

En cualquiera de los modos se puede añadir 8 bits de transparencia alfa, a diferencia de .GIF (que sólo se puede hacer transparencia de color indexado [elegir un color de la paleta para ser reemplazado con 100% de transparencia, aka invisibilidad] -. PNG también puede hacer eso). La transparencia alfa produce resultados mucho mejores que la transparencia indexada, porque los píxeles pueden ser parcialmente transparentes, mientras que con transparencia indexada (el único tipo disponible en.GIF) tus elecciones son opacas o invisibles. Esto crea "halos" alrededor de objetos no rectangulares cuando se colocan con colores de fondo distintos al que el .GIF o indexado .PNG originalmente estaba "enmarañado". También inhibe la posibilidad de realizar efectos como brillos, sombras y, por supuesto, objetos de colores transparentes (sin oscurecimiento). La transparencia alfa puede hacer todas esas cosas con facilidad, contra casi cualquier fondo (los brillos serían en gran medida invisibles sobre un fondo blanco, y las sombras paralelas serían invisibles sobre negro, pero ya sabes a qué me refiero).

sí, se puede hacer 8 bits alfa transparencia en una color indexado PNG! ¿Y adivina qué? ¡Incluso Microsoft Internet Explorer 6 puede mostrar esos bien, completa con transparencia! Son solo los .PNG de 32 bits (color RGB de 24 bits + alfa de 8 bits) que IE6 se atragantó y se muestran en gris.

El programa más conocido que puede exportar PNG8 (color indexado) con alpha transparencia es Adobe (anteriormente Macromedia) Fireworks. El Photoshop "Guardar para Web y dispositivos" (al menos a partir de CS3) no pudo hacer eso, a pesar de haber levantado básicamente la característica de Fireworks cuando Adobe compró Macromedia. Puede guardar PNG8, pero solo con transparencia de color indexado.

De todos modos, los PNG completos de 32 bits (o incluso de 24 bits) serán bastante grandes, aunque generalmente mucho más pequeños que su equivalente .BMP o .TGA o .TIFF sin comprimir o algo así (a menos que intente hacer una fotografía con él - ¡para eso es JPEG!). Por lo general, será un poco más pequeño incluso que .RLE (.BMP comprimido sin pérdida) o .TIF sin pérdidas comprimidas, siendo igual todo lo demás.

A diferencia de la mayoría de estos otros formatos, PNG también admite color RGB de 48 bits, con 16 bits de transparencia alfa opcionales, para obtener una calidad extremadamente alta (mucho más alta que la mayoría de los monitores). Estos se utilizan mejor como un formato de almacenamiento intermedio, para retener información de un escáner de profundidad de bits alta o una cámara (modo RAW) o algo así. Sus tamaños de archivo serían bastante grandes, a pesar de la compresión sin pérdida.

Una cosa que .PNG no puede hacer actualmente es manejar espacios de color no RGB como CMYK o L * a * b.

En resumen:

  • Para las fotografías, utilice .JPG.
  • Para arte de línea y logotipos de color limitado, use color indexado .PNG (PNG8), con transparencia alfa si es necesario.
  • para dibujos y logotipos de colores extensa (por ejemplo un montón de rellenos degradados, de tipo cromo efectos de reflexión metálicos, etc. ), utilice PNG color directo (PNG24) con alfa si es necesario, si se quiere la mejor calidad o necesita transparencia (y no importa que no funcione en IE6 o utilice una de una variedad de soluciones de IE6 para PNG transparentes), y no le molesta el uso de archivos de mayor tamaño y ancho de banda. De lo contrario, use .JPG, pero tenga en cuenta que la calidad se degradará. Es posible que necesite subir la calidad de JPEG bastante alto, especialmente para logotipos u otros gráficos con "texto" en ellos, lo que reduciría el ahorro de tamaño de archivo.
  • Para animaciones de lienzo que no sean Flash/Silverlight/video/HTML5, .GIF si es la elección principal en este momento, pero prepárate para cambiar a APNG (no creo que MNG lo supere, a pesar del apoyo oficial de los desarrolladores de JPEG).
+0

¿Se ha registrado en este sitio solo para poder escribir un artículo de enciclopedia sobre formatos de compresión de imágenes? Admítelo, lo hiciste. Excelente, +1. –

+0

Un gran artículo informativo que se perdió la pregunta, que trata sobre la conversión de jpg a png usando ImageMagick, no sobre los méritos de un formato u otro, con el que estoy familiarizado. ¿Tal vez esta respuesta debería clasificarse como una wiki comunitaria? – konung

+0

Gracias, Tom. Pero no, ya tenía la cuenta. –

2

Responde a: ¿Alguien sabe lo que está pasando el hack? ¿Estoy haciendo algo mal?

sí que estudio esto, usted no está haciendo nada malo, que produjo 8 bits/de color RGB PNG lo resuelvo con reducir o comprimir png con pngnq (http://pngnq.sourceforge.net/) que producen 8 bits/color de mapa de colores PNG.

pngnq me parece que el proyecto que más ha mejorado, ya que es un tenedor de otros como pngquant etc, y está normalmente en la corriente principal de las distribuciones de Linux por lo que acabo de hacer esto:

convert photo.jpg png:- | pngnq -s 1 > photo.png 

Para el último upvoter (2016): pngnq como obsoleto a favor de pngquant (https://github.com/pornel/pngquant)

Cuestiones relacionadas