Paleta PNG con alfa variable: pequeña y estupenda para el navegador web

Publicado el 05 de noviembre de 2008

Paleta PNG con alfa variable: pequeña y estupenda para la imagen del navegador web

Estoy trabajando en el proyecto de código abierto MapTiler/GDAL2Tiles para la publicación estática de mapas al estilo de Google Maps. Este proyecto comenzó como mi proyecto de Google Summer of Code para OSGEO y los resultados se publican en el próximo GDAL 1.6.

Recientemente estuve probando varias optimizaciones de PNG para minimizar el tamaño de los mosaicos conservando una calidad de imagen razonable, ya que esto es crucial para mi aplicación. Esta optimización acelera la descarga y también ahorra mucho espacio en el disco duro. Hay un montón de herramientas disponibles para optimizar el tamaño de PNG: advpng, pngrewrite, pngcrush, pngquant, scolorq, pngnq... Quería elegir una de ellas para el post-procesamiento de los azulejos (o probablemente más tarde integrar dicha optimización directamente en GDAL).

La mejor optimización del tamaño de los archivos PNG se basa siempre en la reducción de la cantidad de colores utilizados: cuando se pasa del modelo RGB(A) a la paleta. Lo que no sabía antes es que PNG admite la paleta con alfa variable. Esto significa que parte de la definición de cada color en la paleta es también su transparencia. ¡Es posible utilizar la funcionalidad normalmente disponible sólo con canales alfa separados, pero con la paleta!

Después de cambiar a PNG con paleta se necesita sólo la mitad o incluso menos del espacio para los datos de la imagen rasterizada. Por supuesto, la conversión de RGBA a paleta es una operación con pérdidas para imágenes con muchos colores... pero con un algoritmo bien elegido para la cuantificación puede ser casi irreconocible para los humanos. Especialmente en el caso de los mosaicos pequeños, como en el caso de MapTiler.

El PNG con la paleta alfa se muestra correctamente en todos los navegadores web más recientes como Firefox 2+, Safari, Explorer 7+ y también en Google Earth. Pero eso no es todo. Internet Explorer 5.5 y 6 muestra estos archivos PNG con una transparencia (limitada) sin necesidad de hackear el HTML. Esto es genial porque le permite mostrar fácilmente las superposiciones de mapas en los navegadores antiguos mediante visores como OpenLayers o Google Maps y seguir siendo capaz de cambiar dinámicamente la opacidad de las superposiciones de mapas que contienen partes transparentes.

Bueno, si es tan genial, ¿cómo producir ese archivo? Hay una aplicación de código abierto muy buena para convertir PNGs RGBA estándar en este PNG8 con paleta alfa:

PNGNQ: http://pngnq.sourceforge.net/ (por Stuart Coyle y Greg Roelofs)

Utiliza el algoritmo de cuantificación de imágenes NeuQuant Neural-Net (por Anthony Dekker) que fue documentado en este artículo en PDF. Con una versión ligeramente modificada de este algoritmo convierte el PNG24 estándar con RGBA en PNG8 con paleta alfa. Es bastante rápido. El archivo PNG resultante suele tener la mitad del tamaño del original. Si usted está loco por el tamaño del PNG producido puede tratar de comprimir el archivo con el paso de post-procesamiento pngcruch. A veces disminuye el tamaño del resultado incluso un poco más.

La documentación de la página del proyecto PNGNQ recomienda que se ejecute:

pngnq -n 256 image.png && pngcrush image-nq8.png smallimage.png

Esta herramienta PNGNQ es excelente para el posprocesamiento de mosaicos PNG generados a partir de MapTiler/GDAL2Tiles...

Y parece que el código fuente de la propia utilidad, así como de las dependencias como el algoritmo NeuQuant, es compatible con la licencia BSD, por lo que tienen una oportunidad de encontrar un camino en GDAL u otras herramientas de código abierto que están procesando mapas...

Petr Pridal

CEO
Publicado el 05 de noviembre de 2008

Descubra MapTiler en francés.

Visite maptiler.fr

Přečtěte si více v češtině

Ver en maptiler.cz

Read more in English

Visite MapTiler.es

Más en Holandés

Ir a MapTiler.nl

日本語で詳細をみる

maptiler.jp へ

Encontrará más información

auf MapTiler.de

ديزملا فشتكإ

maptiler.ae ىلإ لقتنا

Explorar MapTiler en Suiza

Visite MapTiler.ch