[Gvsig_desarrolladores] gvSig Mobile + J9 + imagenescontransparencia

Ignacio Gámez Ramírez ignacio.gamez en geograma.com
Vie Jul 3 15:40:12 CEST 2009


Muchas Gracias Lucas,

 

Ya había resuelto la problemática pero de todas formas le voy a echar un vistazo a lo que propones. 

 

 

Ignacio Gámez Ramírez

Geograma S.L.

Topografía, Cartografía y Sistemas de Información Geográfica

www.geograma.com <http://www.geograma.com/> 

 

De: gvsig_desarrolladores-bounces en listserv.gva.es [mailto:gvsig_desarrolladores-bounces en listserv.gva.es] En nombre de Juan Lucas Dominguez Rubio
Enviado el: viernes, 03 de julio de 2009 14:25
Para: Lista de Desarrolladores de gvSIG; Lista de Desarrolladores de gvSIG
Asunto: Re: [Gvsig_desarrolladores] gvSig Mobile + J9 + imagenescontransparencia

 

Hola, Ignacio.


Creo que no es posible en J9 instanciar directamente un BufferedImage con transparencia (4 bandas) para modificarlo después.

 

¿Has probado a instanciar uno y después usar setRGB(int startX, int startY, int w, int h, int[] rgbArray, int offset, int scansize) para ver si le hace caso al valor alpha de cada pixel?


Si eso no funciona, yo intentaría hacer lo siguiente:


- instanciar un BufferedImage de tres bandas y pintar en él la imagen (por ahora opaca) que te interesa. Después le pides los valores de sus píxels con getRGB(...) y tienes un array de int en los que el byte más alto de cada int es la transparecncia, pero no tiene el valor que tú quieres


- instanciar otro BufferedImage del mismo tamaño y en él pintas en blanco, negro y escala de grises el nivel de opacidad que quieres para cada pixel (negro = 100% transparente, blanco = 100% opaco)


- recorres al array obtenido en el primer paso y le insertas en cada int el byte más alto con el valor que tiene uno cualquiera de los bytes (R, G o B) de la imagen en blanco y negro, y tendrás un int[] con toda la información de tu imagen final.


A continuación, creo que tienes por lo menos dos opciones para instanciar la imagen final:


- crear un java.awt.image.MemoryImageSource pasándole ese int[] que ya tiene todos los valores de colores y opacidad bien puestos y finalmente, con Toolkit.getDefaultToolkit().createImage(ImageProducer) debería crearte la imagen con transparencia que quieres puesto que MemoryImageSource implementa ImageProducer.


- otra opción es utilizar un método JNI que usamos para crear archivos PNG en memoria:


byte[] png_data = ECWReader.paintArray(int[] bitmap, int w, int h, int offset, boolean has_transp);


Si le pasas el array de int que has obtenido, el tamaño de la imagen y offset = 0 y has_transp = true, debería devolverte un array de bytes que son el contenido de un PNG y puedes usar directamente para instanciar una imagen con transparencia:


Image img = Toolkit.getDefaultToolkit().createImage(png_data);

 

 

Estos ejemplos sirven para crear imágenes finales, es decir, el resultado no es editable con setRGB(...) y lo que puedes hacer con esas imágenes es cambiarles de tamaño y pegarlas donde te interese.

 

 

 

 

Saludos,

 

Juan Lucas Domínguez Rubio
---

Prodevelop SL, Valencia (España)

0° 22' 49.62" W, 39° 28' 25.45" N
Tlf.: 96.351.06.12 -- Fax: 96.351.09.68
http://www.prodevelop.es <http://www.prodevelop.es/> 
---

 

________________________________

De: gvsig_desarrolladores-bounces en listserv.gva.es en nombre de Ignacio Gámez Ramírez
Enviado el: jue 02/07/2009 13:21
Para: Lista de Desarrolladores de gvSIG
Asunto: [Gvsig_desarrolladores] gvSig Mobile + J9 + imagenes contransparencia

Buenas,

 

Estoy intentando crear una imagen (bufferedImage) con transparencia utilizando el método Utils.createBufferedImage pasádonle el tercer parámetro de la transparencia pero la máquina virtual J9 me da error. ¿alguien sabe como se puede crear un bufferedImage con transparencia para J9?

 

Gracias y un saludo.

 

Ignacio Gámez Ramírez

 

Geograma S.L.

Topografía, Cartografía y Sistemas de Información Geográfica

www.geograma.com <http://www.geograma.com/> 

 

------------ próxima parte ------------
Se ha borrado un adjunto en formato HTML...
URL: http://listserv.gva.es/pipermail/gvsig_desarrolladores/attachments/20090703/fdb2a962/attachment.htm 


More information about the gvSIG_desarrolladores mailing list