Mostrar/Ocultar TOC

Tabla de Contenidos del Libro
Prefacio
Capítulo 1: Introducción
Capítulo 2: Fundamentos
Capítulo 3: Mapas de Bits
Capítulo 4: Archivos Vectoriales
Capítulo 5: Metaarchivos
Capítulo 6: Dependencias de Plataforma
Capítulo 7: Conversión de Formatos
Capítulo 8: Trabajando con Archivos Gráficos  
Capítulo 9: Compresión
Capítulo 10: Multimedia
Formato: Adobe Illustrator
Formato: Adobe Photoshop
Formato: Atari ST
Formato: AutoCAD DXF
Formato: Autodesk 3D Studio
Formato: BDF
Formato: BRL-CAD
Formato: BUFR
Formato: CALS Raster
Formato: CGM
Formato: CMU
Formato: DKB
Formato: Dore Raster
Formato: DPX
Formato: Dr. Halo
Formato: DVM Movie
Formato: PostScript Encapsulado
Formato: FaceSaver
Formato: FAX
Formato: FITS
Formato: FLI
Formato: GEM Raster
Formato: GEM VDI
Formato: GIF
Texto en Inglés del Capítulo 7
Imagen del CD-ROM de la 2° Edición
Imagen del CD-ROM de la 1° Edición (Torrent y HTTPS)
Versión Hipertexto del CD-ROM de la 2° Edición (En Inglés)
Versión Hipertexto del CD-ROM de la 2° Edición (En Ruso)

Capítulo 7 — Conversión de Formatos

Capítulo 7 — Conversión de Formatos

Programadores de todo tipo piden siempre información sobre cómo convertir entre formatos de archivo, y los programadores gráficos no son la excepción. Debes darte cuenta, sin embargo, de que no todos los formatos pueden convertirse a todos los demás formatos, y esto es doblemente cierto si deseas preservar la calidad de la imagen.



¿Es Realmente Posible?

Los mayores problemas ocurren cuando intentas convertir entre archivos de diferentes tipos de archivo básicos — mapa de bits a vectorial, por ejemplo. La conversión exitosa entre tipos básicos de formatos no siempre es posible debido a las grandes diferencias en las maneras en las que los datos se almacenan.

La conversión de archivos es una tarea ingrata por cualquier número de razones. Ningún fabricante, por ejemplo, se siente obligado a revelar revisiones de formatos propietarios, o incluso a publicar información precisa y especificaciones oportunas para los que ya están en uso común. Muchos formatos también tienen variantes oscuras que pueden ser difíciles de localizar. En cualquier momento, también, puede aparecer una revisión de una aplicación mayor, que contiene un error que le hace producir archivos incorrectos. Estos archivos siempre necesitarán ser soportados después. Por todas estas razones, piensa mucho y seriamente sobre cualquier decisión que hagas sobre incluir características de conversión en tu aplicación. Recuerda también que un formato que está razonablemente bien diseñado para una aplicación deseada, puede no necesariamente poder convertirse para ser usado con otra aplicación. El intercambio entre dispositivos y aplicaciones es solamente tan bueno como los componentes de software (lectores y escritores) que generan e interpretan el formato, ya sea que se trate de CGM, PostScript, o cualquier otro formato.



No lo Hagas Si No lo Necesitas...

Si necesitas convertir archivos de imagen entre formatos, considera usar uno o más de los paquetes de software especialmente escritos para la conversión de formatos de archivo. Hay muchas herramientas muy buenas para la conversión de formatos, las cuales están libremente disponibles y distribuidas en forma binaria o de código fuente. Hemos incluido muchos de estos paquetes en el CD-ROM. También hay algunos paquetes comerciales muy buenos. Mira la sección llamada "Convirtiendo Formatos", en el Capítulo 1, Introducción, para algunas recomendaciones.

Deberías considerar escribir tu propio programa de conversión solo si tienes necesidades de conversión muy específicas que no son satisfechas por las muchas aplicaciones públicamente disponibles y comerciales — por ejemplo, para acomodar un formato propietario. Si decides escribir tu propio convertidor, necesitarás saber un poco sobre qué esperar cuando conviertas de un tipo de formato a otro.



...Pero Si lo Necesitas

En lo que sigue, llamaremos al archivo a ser convertido (el cual ya existe en un formato) el original, y el archivo producido en el segundo formato (después de la operación de conversión) el archivo convertido. Una aplicación de conversión actúa sobre un archivo original para producir un archivo convertido.

Si recuerdas nuestra terminología, una aplicación renderiza un archivo gráfico a un dispositivo de salida o a un archivo. Por extensión, entonces, diremos que una aplicación de conversión renderiza un archivo original a un archivo convertido. También usaremos el término traducción como un sinónimo para conversión.

Mapa de Bits a Mapa de Bits

Convertir un formato de mapa de bits a otro, normalmente produce el mejor resultado de todas las conversiones posibles entre tipos de formato. Todas las imágenes de mapa de bits consisten de pixeles, y en última instancia, todos los datos de mapa de bits se convierten un pixel a la vez. Las cabeceras de mapa de bits y los datos contenidos en ellas pueden variar considerablemente, pero los datos contenidos en ellas pueden agregarse o descartarse a la discresión del software de conversión para llevar a cabo la mejor conversión posible.

Usualmente se necesita alguna reorganización de los datos de color. Esto puede tomar la forma de la separación de los datos de pixel en datos de planos de color, o la adición o remoción de una paleta. Puede incluso suponer la conversión de un modelo de color a otro.

El fracaso de una conversión de mapa de bits a mapa de bits ocurre más a menudo cuando se traduce un archivo escrito en un formato que soporta datos profundos de pixel, a uno escrito en un formato de menos colores, por ejemplo, uno que solo soporta colores de paleta. Esto puede ocurrir cuando estás convirtiendo entre un formato que soporta 24 bits de color y uno que solo soporta datos de 8 bits. El formato de color de la paleta puede no soportar el almacenamiento de suficientes datos como para producir una renderización exacta de la imagen. Usualmente, algunas operaciones de procesamiento de imagen (cuantización o dithering/tramado, más probablemente) son necesarias para aumentar la calidad aparente de la imagen convertida. Las operaciones de este tipo necesariamente harán que la imagen convertida luzca diferente de la original, y por lo tanto técnicamente la imagen no habrá sido preservada en el proceso de conversión.

El otro problema principal surge cuando la imagen convertida debe hacerse más pequeña o más grande que la original. Si la imagen convertida es más pequeña que la original, la información en la imagen original debe descartarse. Aunque pueden usarse varias estrategias de procesamiento de imagen para mejorar la calidad de la imagen, alguna información en todo caso es eliminada cuando el archivo se reduce. Si la imagen convertida es más grande que la original, sin embargo, debe crearse información para rellenar los espacios que aparecen en pixeles anteriormente adyacentes cuando la imagen original se aumenta. No hay una manera completamente satisfactoria de hacer esto, y los procesos actualmente usados típicamente le dan a la imagen aumentada, una apariencia de bloque de pixeles.

Un ejemplo de conversión de mapa de bits a mapa de bits que casi siempre tiene éxito es de PCX a Mapa de Bits de Microsoft Windows.

Vectorial a Vectorial

La conversión entre formatos vectoriales —por ejemplo, desde AutoCAD DXF a Lotus DIF— es posible y a veces muy fácil. Aunque pueden ocurrir dos problemas serios. El primero surge debido en las diferencias en el número y el tipo de objetos disponibles en diferentes formatos vectoriales. Algunos formatos, por ejemplo, ofrecen soporte solo para unos pocos elementos simples de imagen, tales como círculos y rectángulos. Formatos más ricos pueden también ofrecer soporte para muchos elementos complejos adicionales, tales como rellenos de patrones, gotas de sombreado, fuentes de texto, b-splines, y curvas Bezier. Intentar convertir un archivo escrito en un formato complejo rico en elementos, a un formato más simple, resultará en una aproximación de la imagen original.

El segundo problema viene del hecho de que cada formato vectorial tiene su propia interpretación de medidas y la apariencia de elementos de imagen y primitivas. Raramente dos formatos encajan exactamente en la colocación apariencia incluso de elementos de imagen simples. Los problemas comunes son aquellos relacionados a estilos de junturas de línea y estilos de final, y a ubicaciones de centro de línea y de puntos centrales. Por ejemplo, el formato PICT de Macintosh asume que las líneas se dibujan con un punto de pluma que está por debajo y a la derecha de las coordinadas especificadas, mientras que la mayoría de otros formatos centran sus plumas directamente en las coordenadas. Otro ejemplo es el formato GEM VDI, el cual asume que una línea debería dibujarse de modo que se extienda un medio de la anchura de la línea pasada la coordenada final. Las líneas en otros formatos a menudo se detienen exactamente al final de la coordenada de pixel.

Es difícil generalizar más allá de esto. Si escribes un convertidor de formato vectorial a formato vectorial, debes estar consciente de las peculiaridades de cada formato vectorial y los problemas de conversión entre un formato específico y el otro.

Metaarchivo a Metaarchivo

Ya que los metaarchivos pueden contener tanto datos de imagen de mapa de bits como vectoriales, los problemas inherentes en la conversión de mapas de bits y vectores aplican también a los metaarchivos. Generalmente, la parte de mapa de bits del metaarchivo convertirá con éxito, pero la precisión de la conversión de la parte vectorial dependerá en la compatibilidad con el formato al cual estás convirtiendo. Un ejemplo de una conversión de metaarchivo a metaarchivo es la conversión entre los Metaarchivos de Microsoft Windows (WMF) a CGM.

Vector y Metaarchivo a Mapa de Bits

Convertir archivos de formato vectorial y de metaarchivo a formato de mapa de bits generalmente es muy fácil. Una imagen vectorial puede convertirse en un mapa de bits simplemente a dividirla en pixeles componentes y luego escribir esos pixeles a un arreglo en memoria en la memoria equivalente a un color de contraste. El arreglo puede entonces guardarse en un archivo de formato de mapa de bits. Este proceso es familiar a usuarios de programas de dibujo, en donde un mouse o stylus se usa para dibujar figuras geométricas que aparecen como una serie de líneas en la pantalla. Cuando los datos se escriben al disco, sin embargo, se almacenan en un archivo de mapa de bits como una serie de pixeles coloreados en lugar de como datos matemáticos que describen la posición de las líneas que conforman la imagen. La calidad final del mapa de bits resultante dependerá de la resolución del mapa de bits que al se está renderizando y la complejidad (color, profundidad de pixel, y características de imagen) de la imagen vectorial original.

El problema más común que ocurre con este tipo de conversión es el aliasing, a veces conocidos como jaggies. Esto es cuando arcos y líneas diagonales adoptan una apariencia de escalera, en parte debido a la relativamente baja resolución del mapa de bits de salida comparado al necesario para soportar adecuadamente la renderización de la imagen de salida.

La conversión de datos de metaarchivo ASCII a mapa de bits binario usualmente es la parte más complicada y que lleva más tiempo de la conversión del metaarchivo. Como se mencionó antes en la sección que discute los tres tipos básicos de formatos, muchos formatos de metaarchivo también contienen una imagen de mapa de bits. Si la conversión de vector a mapa de bits obtiene resultados pobres, entonces convertir los datos de mapa de bits al formato deseado puede no solo resultar en un mejor trabajo, sino que puede ser un proceso mucho más rápido.

Una conversión de metaarchivo a mapa de bits que casi siempre tiene éxito es de Metaarchivos de Microsoft Windows, a Mapa de Bits de Microsoft Windows.

Mapa de Bits y Metaarchivo a Vector

Convertir archivos de formato de mapa de bits y metaarchivos a formato vectorial usualmente es la más difícil de todas las conversiones a realizar, y raramente obtiene algún tipo de resultados utilizables. Esto es debido al hecho de que se necesitan algoritmos complejos de procesamiento de imagen y heurística para encontrar todas las líneas y esquinas en las imágenes de mapa de bits. Una vez que los contornos se encuentran, deben ser reconocidos y convertidos a sus equivalentes de elementos vectoriales, y cada paso es susceptible a errores. Imágenes simples de mapa de bits pueden aproximarse como imágenes vectoriales, usualmente como dibujos de línea en blanco y negro, pero imágenes más complejas de tipo fotográfico son casi imposibles de reproducir con exactitud. Sin embargo, existen aplicaciones comerciales para proveer varios tipos de detección de esquinas (edge detection) y vectorización. La detección de esquinas sigue siendo un área activa de investigación. Dos ejemplos disponibles para Microsoft Windows son Corel Trace y Adobe Streamline.

Otro problema inherente en la conversión de formatos de archivo de mapa de bits a formato vectorial es el del color. Si bien la mayoría de imágenes de mapa de bits incorporan muchos colores, los formatos vectoriales rara vez ofrecen soporte para más de unos pocos. La conversión de un archivo de mapa de bits original a un archivo vectorial puede resultar en una pérdida del color en la imagen convertida.

Los metaarchivos también tienen los mismos problemas asociados con la conversión de sus componentes de mapa de bits, aunque muchos formatos de metaarchivo son capaces de manejar los colores encontrados en los datos de imagen de rastro originales. La reproducción cercana de vectores para imágenes de mapa de bits usualmente no es posible a menos que los datos de mapa de bits sean muy simples.

Mapa de Bits y Vector a Metaarchivo

Convertir archivos de formato de mapa de bits a metaarchivos puede ser algo muy preciso porque la mayoría de formatos de metaarchivo también puede contener una imagen de mapa de bits. Los archivos fuente en formato vectorial tienen un rango más limitado de formatos destino a los cuales pueden convertir con éxito. Los problemas encontrados en este tipo de conversiones son los mismos que los que ocurren en las conversiones de mapa de bits a vectoriales.

Un proceso común de conversión de este tipo es la conversión de archivos binarios de mapa de bits a un formato de metaarchivo ASCII tal como PostScript. Si bien PostScript solo se cubre brevemente en este libro, este es ampliamente usado para intercambio de archivos, particularmente en la plataforma Macintosh. Tales conversiones dan portabilidad a los datos de imagen diseñados para ser movidos entre máquinas o los cuales pueden dirigirse a un número de diferentes dispositivos de salida.



Otras Consideraciones de Conversión de Formatos

Existen otros problemas que ocurren cuando se convierte de un formato de archivo a otro. Uno de los más difíciles surge cuando se convierte un formato destino a uno que soporta menos colores de los que están contenidos en la imagen original.

Además, el número de colores en una imagen puede no ser un problema, pero los colores específicos contenidos en la imagen original pueden serlo. Por ejemplo, considera la conversión de una imagen de 256 colores de un formato a otro. Ambos formatos soportan imágenes con hasta 256 colores diferentes en el mapa de bits, así que el número de colores no es un problema. Lo que es un problema, sin embargo, es que el formato fuente elige los colores que pueden ir en la paleta de un campo de 16 millones (paleta de 24 bits), mientras que el formato destino puede almacenar colores solo de un rango de 65,536 (paleta de 16 bits). Es muy probable que la imagen fuente contendrá colores que no están definidos en la paleta de la imagen destino. La aplicación que hace la conversión tendrá que depender de algún esquema de aliasing del color, el cual usualmente falla en proveer resultados satisfactorios.

 n0HCo(-JT' &N5i5詗7c'wOưQ|c!@|%A"@[0d1̖Y'zb,5͔Ow( 2+FcI`Fqlzv(7LX rfYvNzzYOA#.E-94Zn!S 52@K9my;.}U݀r&jn2WWHJ`Q}u_tro {rWL;=_ؼ