2010-05-13 26 views
8

Tengo un proyecto en el que necesito convertir una gran cantidad de tipos de imágenes para visualizarlas en una aplicación de Silverlight: TIFF, GIF, WMF, EMF, BMP, DIB etc. Puedo hacer estas conversiones en el servidor antes de hidratar la aplicación Silverlight.Programando el formato de conversión de imagen a JPEG o PNG para la pantalla de Silverlight

Sin embargo, no estoy seguro de cuándo debo elegir convertir a qué formato, ya sea JPG o PNG. ¿Hay algún tipo de estándar por ahí como TIFF siempre debe ser un JPEG y GIF siempre debe ser un PNG. O bien, si un BMP es de 24 bits, se debe convertir a JPEG, cualquiera inferior y puede ser un PNG. O todo es un PNG y ¿por qué?

Lo que suelo see o see en respuesta a este tipo de pregunta es "Bueno, si la imagen es una fotografía, ir con JPEG" o "Si tiene líneas rectas, PNG es mejor." Desafortunadamente, no tendré el lujo de ver ninguno de los archivos de imagen y me gustaría simplemente una forma estándar de hacerlo a través de código, incluso si eso es un billón de declaraciones if/then.

¿Existen estándares o mejores prácticas en torno a este tema?

Respuesta

5

El simplest thing that could possibly work es "mantener todos los detalles" ("100% de calidad"), es decir, siempre use PNG en lugar de JPEG.

Las imágenes PNG siempre se ven idénticas a las originales (no tiene pérdidas). Las imágenes JPG suelen tener el mismo aspecto que el original, pero en algunas imágenes (como el dibujo lineal) JPG proporciona artefactos de compresión extraños (es con pérdida).

  • No ayuda a convertir imágenes JPEG a imágenes PNG. Pase archivos JPEG directamente sin conversión. Si un archivo de contenedor TIFF contiene una imagen JPEG, extráigala a un archivo de formato JPEG estándar; de lo contrario, probablemente sea mejor convertir ese archivo TIFF a PNG.
  • considere hacer un archivo JPEG y un archivo PNG; si el archivo JPEG es "significativamente" más pequeño que el archivo PNG, utilice el archivo JPEG.
  • ".emf" y ".wmf" son intrínsecamente vectoriales, en lugar de gráficos de trama. PNG es mejor que JPEG para gráficos vectoriales, pero lo mejor sería un formato de archivo vectorial. ¿Es posible usar el formato de gráficos vectoriales estándar (".svg")?
+0

Gracias David, ese es un consejo muy bueno, especialmente los primeros 2 balas. En el n. ° 3, desafortunadamente no puedo usar SVG, solo PNG y JPEG. –

1

Una gran ventaja de JPG sobre PNG es que los JPG proporcionan un buen equilibrio entre el tamaño y la calidad de la imagen. Si el tamaño del archivo no es una preocupación, entonces PNG es probablemente el camino a seguir, ya que ofrece más flexibilidad que JPG. Sin embargo, esto realmente no responde su pregunta.

1

Puede usar un servicio como Smush.it - le dirá el mejor formato optimizado para las imágenes y ejecutará las compresiones por usted.

Si no recuerdo mal, ejecutan todas las compresiones en cada imagen, luego comparan los resultados ... devolviendo lo mejor del conjunto.

+0

Este es un servicio interesante, no lo había visto antes. Eso es lo que quiero hacer, excepto por mi cuenta, no a través de un tercero. Sin embargo, estoy viendo la compresión como un segundo paso: la conversión es la primera y con eso necesito algunas pautas basadas en algún tipo de conjunto de propiedades de un archivo de imagen. Como 'If myImage.RawFormat = ImageFormat.GIF And myImage.Flags = ImageFlagsHasAlpha Then myImage.Save (imageName &". "& ImageFormat.Png) Else myImage.Save (imageName &". "& ImageFormat.Jpg)'. La verdadera pregunta es: ¿hay alguna opción lógica de elección de salida basada en la entrada? –

Cuestiones relacionadas