<HTML dir=ltr><HEAD>
<META http-equiv=Content-Type content="text/html; charset=unicode">
<META content="MSHTML 6.00.6000.16850" name=GENERATOR>
<STYLE>
<!--
                       
 font-face
        {font-family:Calibri;}
                        
 p.MsoNormal, li.MsoNormal, div.MsoNormal
        {margin:0cm;
        margin-bottom:.0001pt;
        font-size:11.0pt;
        font-family:"Calibri","sans-serif";}
a:link, span.MsoHyperlink
        {
        color:blue;
        text-decoration:underline;}
a:visited, span.MsoHyperlinkFollowed
        {
        color:purple;
        text-decoration:underline;}
span.EstiloCorreo17
        {
        font-family:"Calibri","sans-serif";
        color:windowtext;}
.MsoChpDefault
        {}

div.Section1
        {page:Section1;}
-->
</STYLE>
</HEAD>
<BODY lang=ES vLink=purple link=blue>
<DIV id=idOWAReplyText79008 dir=ltr>
<DIV dir=ltr><FONT face="Times New Roman" color=#000000 size=3>Hola, Ignacio.</FONT></DIV><FONT face="Times New Roman" color=#000000 size=3>
<DIV dir=ltr><BR>Creo que no es posible en J9 instanciar directamente un BufferedImage con transparencia (4 bandas) para modificarlo después.</DIV>
<DIV dir=ltr>&nbsp;</DIV>
<DIV dir=ltr>¿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?</DIV>
<DIV dir=ltr><BR>Si eso no funciona, yo intentaría hacer lo siguiente:</DIV>
<DIV dir=ltr><BR>- 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</DIV>
<DIV dir=ltr><BR>- 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)</DIV>
<DIV dir=ltr><BR>- 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.</DIV>
<DIV dir=ltr><BR>A continuación, creo que tienes por lo menos dos opciones para instanciar la imagen final:</DIV>
<DIV dir=ltr><BR>- 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.</DIV>
<DIV dir=ltr><BR>- otra opción es utilizar un método JNI que usamos para crear archivos PNG en memoria:</DIV>
<DIV dir=ltr><BR>byte[] png_data = ECWReader.paintArray(int[] bitmap, int w, int h, int offset, boolean has_transp);</DIV>
<DIV dir=ltr><BR>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:</DIV>
<DIV dir=ltr><BR>Image img = Toolkit.getDefaultToolkit().createImage(png_data);</DIV>
<DIV dir=ltr>&nbsp;</DIV>
<DIV dir=ltr>&nbsp;</DIV>
<DIV dir=ltr>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.</DIV>
<DIV dir=ltr>&nbsp;</DIV>
<DIV dir=ltr>&nbsp;</DIV>
<DIV dir=ltr>&nbsp;</DIV>
<DIV dir=ltr>&nbsp;</DIV>
<DIV dir=ltr>Saludos,</FONT></DIV></DIV>
<DIV dir=ltr>
<DIV dir=ltr><FONT face="Times New Roman" color=#000000 size=3></FONT>&nbsp;</DIV>
<DIV dir=ltr><FONT face="Courier New" size=2><FONT face="Times New Roman" size=3>Juan Lucas Domínguez Rubio<BR></FONT>---</FONT></DIV></DIV>
<DIV id=idSignature14037 dir=ltr>
<DIV><FONT face="Courier New" size=2>Prodevelop SL, Valencia (España)</FONT></DIV>
<DIV><FONT face="Courier New" size=2>0° 22' 49.62" W, 39° 28' 25.45" N<BR>Tlf.: 96.351.06.12 -- Fax: 96.351.09.68<BR></FONT><A href="http://www.prodevelop.es/"><FONT face="Courier New" size=2>http://www.prodevelop.es</FONT></A><BR><FONT face="Courier New" size=2>---</FONT></DIV></DIV>
<DIV dir=ltr><BR>
<HR tabIndex=-1>
<FONT face=Tahoma size=2><B>De:</B> gvsig_desarrolladores-bounces@listserv.gva.es en nombre de Ignacio Gámez Ramírez<BR><B>Enviado el:</B> jue 02/07/2009 13:21<BR><B>Para:</B> Lista de Desarrolladores de gvSIG<BR><B>Asunto:</B> [Gvsig_desarrolladores] gvSig Mobile + J9 + imagenes contransparencia<BR></FONT><BR></DIV>
<DIV>
<DIV class=Section1>
<P class=MsoNormal>Buenas,</P>
<P class=MsoNormal>&nbsp;</P>
<P class=MsoNormal>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?</P>
<P class=MsoNormal>&nbsp;</P>
<P class=MsoNormal>Gracias y un saludo.</P>
<P class=MsoNormal><B></B>&nbsp;</P>
<P class=MsoNormal><B><SPAN style="COLOR: #1f497d">Ignacio Gámez Ramírez</SPAN></B></P>
<P class=MsoNormal><B></B>&nbsp;</P>
<P class=MsoNormal><B><SPAN style="COLOR: navy; FONT-FAMILY: 'Arial','sans-serif'">Geograma S.L.</SPAN></B><SPAN style="FONT-SIZE: 8pt; COLOR: #1f497d; FONT-FAMILY: 'Arial','sans-serif'"></SPAN></P>
<P class=MsoNormal><B><SPAN style="FONT-SIZE: 9pt; COLOR: #004080; FONT-FAMILY: 'Arial','sans-serif'">Topografía, Cartografía y Sistemas de Información Geográfica</SPAN></B><B><SPAN lang=ES-TRAD style="FONT-SIZE: 9pt; COLOR: #004080; FONT-FAMILY: 'Times New Roman','serif'"></SPAN></B></P>
<P class=MsoNormal><B><SPAN style="FONT-SIZE: 8pt; COLOR: #004080; FONT-FAMILY: 'Arial','sans-serif'"><A href="http://www.geograma.com/"><SPAN style="COLOR: blue">www.geograma.com</SPAN></A></SPAN></B><SPAN style="FONT-SIZE: 8pt; COLOR: #1f497d"></SPAN></P>
<P class=MsoNormal>&nbsp;</P></DIV></DIV></BODY></HTML>