[Gvsig_desarrolladores] vista - exportar - imagen - jython
Juan Lucas Dominguez Rubio
jldominguez en prodevelop.es
Mie Sep 22 14:24:15 CEST 2010
Hola, así es como yo había pensado hacerlo:
===================================
import time;
from java.awt.image import *;
from javax.imageio import ImageIO;
from java.io import File;
from gvsiglib import *;
view = gvSIG.getActiveDocument();
mctrl = view.getMapControl();
mcon = mctrl.getMapContext();
vp = mctrl.getViewPort();
lyr=mcon.getLayers().getLayer(0);
lyr.getSource().start();
azu0=lyr.getSource().getShape(0);
vp.setExtent(azu0.getBounds2D());
// tamaño de azulejo en la pantalla /(pixels)
w = vp.fromMapDistance(azu0.getBounds2D().getWidth());
h = vp.fromMapDistance(azu0.getBounds2D().getHeight());
// imagen de ese tamaño
bimg = BufferedImage(w,h, BufferedImage.TYPE_INT_RGB);
// en su objeto graf se puede dibujar
graf = bimg.createGraphics();
// desplazamiento del mapa respecto a azulejo
offsetxmap = azu0.getBounds2D().getMinX()-vp.getAdjustedExtent().getMinX();
offsetymap = vp.getAdjustedExtent().getMaxY()-azu0.getBounds2D().getMaxY();
// desplazamiento del mapa respecto a azulejo
offsetxpix = vp.fromMapDistance(offsetxmap);
offsetypix = vp.fromMapDistance(offsetymap);
// se dibuja el mapa en la imagen creada (como un clip)
graf.drawImage(mctrl.getImage(), -offsetxpix, -offsetypix, w, h, None);
// se escribe la imagen en PNG
ImageIO.write(bimg,'png',File('c:/tempo/azulejo.png'))
===================================
pero creo que hay algún error en los cálculos. Tienes que revisarlo, pero creo que de esa manera se puede hacer.
Saludos,
Juan Lucas Domínguez Rubio
---
Prodevelop SL, Valencia (España)
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 Steffen Koch
Enviado el: mar 21/09/2010 20:39
Para: Lista de Desarrolladores de gvSIG
Asunto: Re: [Gvsig_desarrolladores] vista - exportar - imagen - jython
Hola Juan Lucas,
gracias por tu respuesta. Bueno quiero utilizar un fichero de shape (polígono) para averiguar los tamanos de la vista. He empezado a programar el scripting de python con estas lineas:
#importar gvSIG funciones
from gvsiglib import *
#view, mapcontrol, mapcontext
view = gvSIG.getActiveDocument()
mctrl = view.getMapControl()
mcon = mctrl.getMapContext()
# la primera capa
lyr= mcon.getLayers().getLayer(0)
#el primer polígono
azulejo1 = lyr.getsource().getShape(0)
#las coordenadas
bazulejo1 = azulejo1.getBounds2D()
xmax = bazulejo1.getMaxX()
xmin = bazulejo1.getMinX()
ymax = bazulejo1.getMaxY()
...
ahora no tengo claro, es que pensaba que puedo cortar un sector (polígono) de la vista, - pero con el método BufferedImage tengo que definir la altura y la anchura de la vista y yo queria solucionar el problema con definir el sector con las coordinadas, porque igual son 5 o 37 polígonos/azulejos. Hay otra possibilidad de cortar azulejos?
Saludos, Stef
________________________________
Von: "Juan Lucas Dominguez Rubio" <jldominguez en prodevelop.es>
Gesendet: 13.09.2010 13:27:53
An: "Lista de Desarrolladores de gvSIG" <gvsig_desarrolladores en listserv.gva.es>, gvsig_desarrolladores en listserv.gva.es
Betreff: Re: [Gvsig_desarrolladores] vista - exportar - imagen - jython
Hola,
¿los bordes de esos cuadrículas (azulejos) cómo se definen?
¿valdría con que fueran siempre los cuatro cuartos idénticos de la vista actual?
Creo que yo intentaría esto con jython:
- averiguar el tamaño de la vista en pixels
- dividir por dos la altura y anchura e instanciar 4 BufferedImage de ese tamaño
- para cada BufferedImage, usa su Graphics y pinta sobre él la parte del mapa que te interesa (mediante offsets)
- finalmente, cada bufferedImage puede exportarse a PNG con ImageIO
En algún lugar de MapContext o MapControl habrá una copia del mapa actual (también un BufferedImage, probablemente)
Sería más o menos así
...
BufferedImage azulejo2 = new BuferredImage(w/2, h/2);
Graphics azugra2 = azulejo2.createGraphics();
azugra2.paintImage(mapa_actual, -w/2, 0);
ImageIO.export(azulejo2, "png", "c:\\imagenes\\img2.png")
(o algo así)
...
Al poner -w/2, hacemos un 'clip' de la zona de interés.
Saludos,
Juan Lucas Domínguez Rubio
---
Prodevelop SL, Valencia (España)
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 Steffen Koch
Enviado el: jue 02/09/2010 13:16
Para: gvsig_desarrolladores en listserv.gva.es
Asunto: [Gvsig_desarrolladores] vista - exportar - imagen - jython
hola,
estoy buscando un camino para exportar automaticamente la vista a imagenes, igual no funciona con gvsig, no se - es que tengo en mi ejemplo 4 rectángulos/azulejos que quiero exportar cada uno como imagen, pero automaticamente con la ayuda de jython. Tenéis una idea como podría funcionar. Gracias por vuestra ayuda.
Saludos, Stef
___________________________________________________________
Neu: WEB.DE De-Mail - Einfach wie E-Mail, sicher wie ein Brief!
Jetzt De-Mail-Adresse reservieren: https://produkte.web.de/go/demail02
GRATIS: Spider-Man 1-3 sowie 300 weitere Videos!
Jetzt kostenlose Movie-FLAT freischalten! http://movieflat.web.de <http://movieflat.web.de/>
------------ próxima parte ------------
Se ha borrado un adjunto en formato HTML...
URL: http://listserv.gva.es/pipermail/gvsig_desarrolladores/attachments/20100922/fe374797/attachment.htm
Más información sobre la lista de distribución gvSIG_desarrolladores