La transparencia en los gráficos de computadora es posible en varios formatos de archivo . El término " transparencia " se utiliza de diversas formas por diferentes personas, pero en su forma más simple existe "transparencia total", es decir, algo que es completamente invisible. Solo una parte de un gráfico debe ser completamente transparente, o no habría nada que ver. Más compleja es la "transparencia parcial" o "translucidez" [ cita requerida ] donde se logra el efecto de que un gráfico es parcialmente transparente de la misma manera que el vidrio coloreado. Dado que en última instancia una página impresa o una pantalla de computadora o televisión solo puede ser de un color en un punto, la transparencia parcial siempre se simula en algún nivel mezclando colores . Hay muchas formas diferentes de mezclar colores, por lo que en algunos casos la transparencia es ambigua.
Además, la transparencia suele ser un "extra" para un formato gráfico y algunos programas gráficos ignorarán la transparencia.
Los formatos de archivos rasterizados que admiten transparencia incluyen GIF , PNG , BMP , TIFF , TGA y JPEG 2000 , ya sea a través de un color transparente o un canal alfa .
La mayoría de los formatos vectoriales admiten la transparencia de manera implícita porque simplemente evitan colocar objetos en un punto determinado. Esto incluye EPS y WMF . Para los gráficos vectoriales, esto puede no considerarse estrictamente como transparencia, pero requiere la misma programación cuidadosa que la transparencia en los formatos rasterizados.
Los formatos vectoriales más complejos pueden permitir combinaciones de transparencia entre los elementos dentro del gráfico, además de lo anterior. Esto incluye SVG y PDF .
Un editor de gráficos rasterizados adecuado muestra la transparencia mediante un patrón especial, por ejemplo, un patrón de tablero de ajedrez.
Una entrada de color en la paleta de una sola imagen GIF o PNG se puede definir como "transparente" en lugar de un color real. Esto significa que cuando el decodificador encuentra un píxel con este valor, se representa en el color de fondo de la parte de la pantalla donde se encuentra la imagen, incluso si este varía píxel por píxel, como en el caso de una imagen de fondo .
Las aplicaciones incluyen:
El color transparente debe elegirse con cuidado, para evitar que los elementos que sean del mismo color desaparezcan.
Incluso esta forma limitada de transparencia tiene una implementación irregular, aunque la mayoría de los navegadores web más populares son capaces de mostrar imágenes GIF transparentes. Esta compatibilidad a menudo no se extiende a la impresión, especialmente a los dispositivos de impresión (como PostScript ) que no incluyen compatibilidad con la transparencia en el dispositivo o el controlador. Fuera del mundo de los navegadores web, la compatibilidad con los archivos GIF transparentes es bastante imprecisa.
Los bordes de los caracteres y otras imágenes con fondo transparente no deben tener tonos de gris : normalmente se utilizan para colores intermedios entre el color de la letra/imagen y el del fondo, siendo típicamente los tonos de gris intermedios entre una letra negra y un fondo blanco. Sin embargo, con, por ejemplo, un fondo rojo los colores intermedios serían rojo oscuro. Los píxeles de borde gris darían un resultado feo y poco claro. Para un color de fondo variable no hay colores intermedios fijos adecuados.
Algunos formatos de imagen, como PNG y TIFF, también permiten transparencia parcial a través de un canal alfa, lo que resuelve el problema de limitación de bordes. En lugar de que cada píxel sea transparente o no transparente, se puede configurar en 254 niveles de transparencia parcial, lo que permite que parte de la imagen de fondo se vea a través de la imagen de primer plano.
Un uso importante de la transparencia parcial es producir "bordes suaves" en gráficos para que se mezclen con el fondo. [1] Véase también monocromo o con tonos de gris y anti-aliasing . La transparencia parcial también se puede utilizar para hacer que una imagen sea menos prominente, como una marca de agua u otro logotipo; o para hacer que algo sea transparente, como una aparición fantasmal en un videojuego. Animar el canal alfa en un programa de edición de imágenes puede permitir transiciones suaves entre diferentes imágenes.
El proceso de combinar un color parcialmente transparente con su fondo ("composición") suele estar mal definido y los resultados pueden no ser exactamente los mismos en todos los casos. Por ejemplo, cuando se utiliza la corrección de color, ¿deberían combinarse los colores antes o después de la corrección de color?
Un enfoque alternativo a la transparencia total es utilizar un trazado de recorte . Un trazado de recorte es simplemente una forma o contorno que se utiliza junto con otros gráficos. Todo lo que se encuentra dentro del trazado es visible y todo lo que se encuentra fuera del mismo es invisible. El trazado es inherentemente vectorial, pero puede utilizarse potencialmente para enmascarar datos tanto vectoriales como de mapa de bits. El uso principal de los trazados de recorte es en archivos PostScript.
Si bien algunas especificaciones de transparencia son vagas, otras pueden brindar detalles matemáticos sobre cómo se deben combinar dos colores. Esto brinda un ejemplo bastante simple de cómo pueden funcionar los cálculos de composición, cómo pueden producir los resultados esperados y también cómo pueden generar sorpresas.
En este ejemplo, se van a combinar dos colores en escala de grises. Los valores de escala de grises se consideran números entre 0,0 (blanco) y 1,0 (negro). Cabe destacar que esta es solo una de las reglas posibles para la transparencia. Si trabaja con transparencia, consulte las reglas que se utilizan en su situación.
El color en un punto donde se van a combinar los colores G1 y G2 es ( G1 + G2 ) / 2
. Algunas consecuencias de esto son:
( G1 + G1 ) /2 = G1
.G2 / 2
. Este siempre será menor que cualquier valor distinto de cero de G2, por lo que el resultado es más blanco que G2. (Esto se puede revertir fácilmente para el caso en que G2 sea blanco).( G2 + 1 ) / 2
. Esto siempre será mayor que G2, por lo que el resultado es más negro que G2.( G1 + G2 ) / 2 = ( G2 + G1 ) / 2
. Esto significa que no importa en qué orden se mezclan dos gráficos, es decir, cuál de los dos está arriba y cuál abajo.( (G1 + G2 ) / 2 + G3 ) / 2 = G1 / 4 + G2 / 4 + G3 / 2(G1 + (G2 + G3)/2)/2 = G1/2 + G2/4 + G3/4
Esto es importante ya que significa que al combinar tres o más objetos con esta regla de transparencia, el color final depende en gran medida del orden en que se realicen los cálculos.
Aunque la fórmula es sencilla, puede que no sea la ideal. La percepción humana del brillo no es lineal: no consideramos necesariamente que un valor de gris de 0,5 esté a medio camino entre el blanco y el negro. Estos detalles pueden no tener importancia cuando se utiliza la transparencia solo para suavizar los bordes, pero en diseños más complejos esto puede ser significativo. La mayoría de las personas que trabajan seriamente con la transparencia necesitarán ver los resultados y pueden jugar con los colores o (cuando sea posible) el algoritmo para llegar a los resultados que necesitan.
Esta fórmula se puede generalizar fácilmente a los colores RGB o CMYK aplicándola a cada canal por separado. Por ejemplo, final red = ( R1 + R2 ) / 2
. Pero no se puede aplicar a todos los modelos de color. Por ejemplo, el color Lab produciría resultados sorprendentes.
Un modelo alternativo es que en cada punto de cada elemento que se va a combinar para lograr transparencia hay un color y una opacidad asociados entre 0 y 1. Para cada canal de color, se puede trabajar con este modelo: si un canal con intensidad G2
y opacidad T2
se superpone a un canal con intensidad G1
y opacidad, T1
el resultado será un canal con intensidad igual a (1 - T2) * G1 + G2
, y opacidad 1 - (1 - T2) * (1 - T1)
. Cada canal debe multiplicarse por el valor alfa correspondiente antes de la composición (lo que se denomina alfa premultiplicado ). La especificación de archivos SVG utiliza este tipo de combinación, y este es uno de los modelos que se pueden utilizar en PDF.
Los canales alfa se pueden implementar de esta manera, donde el canal alfa proporciona un nivel de opacidad que se aplica por igual a todos los demás canales. Para trabajar con la fórmula anterior, la opacidad debe escalarse en el rango de 0 a 1, independientemente de su representación externa (a menudo de 0 a 255 si se utilizan muestras de 8 bits como "RGBA").
A partir de la versión 1.4 del estándar PDF ( versión 5 de Adobe Acrobat ), se admite la transparencia (incluida la translucidez). La transparencia en los archivos PDF permite a los creadores lograr varios efectos, como agregar sombras a los objetos, hacer que los objetos sean semitransparentes y hacer que los objetos se fusionen entre sí o con el texto. PDF admite muchos modos de fusión diferentes , no solo el método de promedio más común, y las reglas para componer muchos objetos superpuestos permiten opciones (como si un grupo de objetos se fusiona antes de fusionarse con el fondo o si cada objeto a su vez se fusiona con el fondo).
La transparencia de los archivos PDF es un modelo muy complejo, y su especificación original de Adobe consta de más de 100 páginas. Una de las principales causas de esta complicación es que la combinación de objetos con diferentes espacios de color puede ser complicada y propensa a errores, además de causar problemas de compatibilidad . La transparencia en los archivos PDF se diseñó para no causar errores en los lectores de archivos PDF que no la entendieran, ya que simplemente mostrarían todos los elementos como completamente opacos. Sin embargo, esto era un arma de doble filo, ya que los usuarios con lectores más antiguos, impresoras PDF, etc. podían ver o imprimir algo completamente diferente del diseño original.
El hecho de que el modelo de transparencia de PDF sea tan complicado significa que no cuenta con un buen soporte. Esto significa que los RIP y las impresoras a menudo tienen problemas para imprimir archivos PDF con transparencia. La solución a este problema es rasterizar la imagen o aplicar un aplanamiento de transparencia vectorial al PDF. Sin embargo, el aplanamiento de transparencia vectorial es extremadamente complejo y solo lo admiten unos pocos paquetes especializados.
El lenguaje PostScript tiene un soporte limitado para la transparencia total (no parcial), según el nivel de PostScript. La transparencia parcial está disponible con la extensión pdfmark, [2] disponible en muchas implementaciones de PostScript.
PostScript de nivel 1 ofrece transparencia a través de dos métodos:
El PostScript de nivel 2 no añade características de transparencia específicas. Sin embargo, mediante el uso de patrones, se pueden pintar gráficos arbitrarios a través de máscaras definidas por cualquier operación vectorial o de texto. Sin embargo, esto es complejo de implementar. Además, con demasiada frecuencia se alcanzaban límites de implementación y pocos programas de aplicación, si es que había alguno, ofrecían esta técnica.
El nivel 3 de PostScript agrega más opciones de transparencia para cualquier imagen rasterizada. Se puede aplicar un color transparente o una gama de colores, o se puede utilizar una máscara de 1 bit independiente para proporcionar un canal alfa.
Los archivos EPS contienen PostScript, que puede ser de nivel 1, 2 o 3 y hacer uso de las características anteriores. Un problema más sutil surge con las vistas previas de los archivos EPS que se utilizan normalmente para mostrar la vista del archivo EPS en la pantalla. Existen técnicas viables para configurar la transparencia en la vista previa. Por ejemplo, una vista previa TIFF puede utilizar un canal alfa TIFF. Sin embargo, muchas aplicaciones no utilizan esta información de transparencia y, por lo tanto, mostrarán la vista previa como un rectángulo. Una técnica semipropietaria iniciada en Photoshop y adoptada por varias aplicaciones de preimpresión es almacenar un trazado de recorte en una ubicación estándar del EPS y utilizarla para la visualización.
Además, pocos de los programas que generan vistas previas EPS generarán información de transparencia en la vista previa.
Algunos programas han intentado evitar esto tratando todo el blanco en la vista previa como transparente, pero esto también es problemático en los casos en que algunos blancos no son transparentes.
Más recientemente, han aparecido aplicaciones que ignoran por completo la vista previa; por lo tanto, obtienen información sobre qué partes de la vista previa pintar interpretando el PostScript.