[Gvsig_desarrolladores] Transparencia en PNG24

Nacho Brodin brodin_ign en gva.es
Mar Jun 13 13:12:37 CEST 2006


Hola,
He estado probando el cliente WMS haciendo peticiones de png con banda de 
transparencia y parece que trata bien este tipo de fichero. Esta prueba la he 
hecho con el servidor de la nasa, por si quieres hacer alguna prueba. 
http://wms.jpl.nasa.gov/wms.cgi

Sobre la imagen que tienes puedes hacer un "info" con la herramienta de 
comandos gdalinfo que viene en la instalación de Gdal para ver dos cosas: 
-El driver que gdal debe decir que está usando es el de PNG. Para comprobarlo, 
en la salida de gdalinfo debe aparecer la línea

Driver: PNG/Portable Network Graphics

Por otro lado esta misma herramienta debe informarte de que la imagen debe 
tener cuatro bandas. En la cuarta el ColorInterp debe ser igual a Alpha.

En última instancia, si la imagen cumple estos requisitos y no se muestra la 
transparencia podrías hacernos llegar una imagen  para poder probarla.

Nacho Brodin
Equipo de desarrollo de gvSIG.

El Martes 13 Junio 2006 12:01, Jorge Gaspar Sanz Salinas escribió:
> Hola a todos,
>
> En Prodevelop estamos desarrollando el cliente ArcIMS para gvSIG.
> Tenemos un problema al dibujar mapas que se reciben en formato PNG de 24
> bits. Aunque el fichero se recibe con un color transparente, gvSIG no es
> capaz de reconocer dicho color y aunque el mapa aparece, el fondo se
> dibuja de color blanco.
>
> He probado a importar un fichero de este tipo a un Mapa de gvSIG y
> ocurre lo mismo, el fondo no se consigue tratar como un color
> transparente sino que aparece en blanco opaco.
>
> El último punto en el que nuestra extensión dibuja la capa es en el
> método draw de la clase PxRaster. El principio del método que copio más
> abajo es prácticamente idéntico al de la extensión WMS y funciona
> perfectamente con GIF, PNG de 8 bits y JPG (que son el resto de formatos
> que devuelve un servicio de imágenes de ArcIMS).
>
> Dado que en la vista de mapa también se produce el mismo efecto entiendo
> que el bug no está en este código sino en el tratamiento de este tipo
> concreto de imágenes. ¿Es correcto?
>
> Un saludo y feliz martes 13 ;)
>
> <<-------------------------------------------------------------------------
>-- private void rasterProces(Graphics2D g, ViewPortData vpData, File file) {
>
> rasterFile = new GdalFile(vpData.getProjection(), file.getAbsolutePath());
> raster = new PxRaster(rasterFile, null, rasterFile.getExtent());
>
> if (this.filterStack != null)
> raster.filterStack = this.filterStack;
>
> raster.setTransparency(false);
>
> if (this.transparency == -1 && !firstLoad);
> else
> raster.setTransparency(this.transparency);
>
> raster.setBand(GeoRasterFile.RED_BAND, rband);
> raster.setBand(GeoRasterFile.GREEN_BAND, gband);
> raster.setBand(GeoRasterFile.BLUE_BAND, bband);
>
> if (this.stackManager != null)
> raster.setStackManager(this.stackManager);
>
> raster.draw(g, vpData);
>
> [...]
> <<-------------------------------------------------------------------------
>--



Más información sobre la lista de distribución gvSIG_desarrolladores