// public void savePDF(){ // Rectangle suggestedPageSize = getITextPageSize(page1.getPageSize()); // Rectangle pageSize = rotatePageIfNecessary(suggestedPageSize); // //rotate if we need landscape // Document document = new Document(pageSize); // // PdfWriter writer = PdfWriter.getInstance(document, new FileOutputStream(outputFile)); // document.open(); // Graphics2D graphics = cb.createGraphics(pageSize.getWidth(), pageSize.getHeight()); // // // call your GTRenderer here // GTRenderer draw = new StreamingRenderer(); // draw.setMapContent(mapContent); // // draw.paint(graphics, outputArea, mapContent.getLayerBounds() ); // // // cleanup // graphics.dispose(); // // //cleanup // document.close(); // writer.close(); // } public void saveImage(final MapContent map, final String file, final int imageWidth) { GTRenderer renderer = new StreamingRenderer(); renderer.setMapContent(map); Rectangle imageBounds = null; ReferencedEnvelope mapBounds = null; try { mapBounds = map.getMaxBounds(); double heightToWidth = mapBounds.getSpan(1) / mapBounds.getSpan(0); imageBounds = new Rectangle(0, 0, imageWidth, (int) Math.round(imageWidth * heightToWidth)); } catch (Exception e) { // failed to access mapContent layers throw new RuntimeException(e); } BufferedImage image = new BufferedImage(imageBounds.width, imageBounds.height, BufferedImage.TYPE_INT_RGB); Graphics2D gr = image.createGraphics(); gr.setPaint(Color.WHITE); gr.fill(imageBounds); try { renderer.paint(gr, imageBounds, mapBounds); File fileToSave = new File(file); ImageIO.write(image, "jpeg", fileToSave); } catch (Exception e) { e.printStackTrace(); } }
public void saveNewImage(MapContent map, String file) { GTRenderer renderer = new StreamingRenderer(); renderer.setMapContent(map); System.out.println("line 139"); Rectangle imageBounds = null; try { ReferencedEnvelope mapBounds = map.getMaxBounds(); double heightToWidth = mapBounds.getSpan(1) / mapBounds.getSpan(0); int imageWidth = 600; imageBounds = new Rectangle(0, 0, imageWidth, (int) Math.round(imageWidth * heightToWidth)); } catch (Exception e) { } System.out.println("line 151"); // Rectangle imageSize = new Rectangle(600,600); BufferedImage image = new BufferedImage( imageBounds.width, imageBounds.height, BufferedImage.TYPE_INT_RGB); // darker red fill Graphics2D gr = image.createGraphics(); gr.setPaint(Color.WHITE); gr.fill(imageBounds); try { System.out.println("line 161"); renderer.paint(gr, imageBounds, map.getMaxBounds()); System.out.println("line 163"); File fileToSave = new File(file); System.out.println("line 166"); ImageIO.write(image, "jpeg", fileToSave); System.out.println("line 168"); } catch (IOException e) { } }
/** * Draws map content data into image * * @param content * @return image */ private BufferedImage saveImage(MapContent content) { BufferedImage image; if (isTile && bufferSize != 0.0d) { image = new BufferedImage(bufferedImageWidth, bufferedImageHeight, BufferedImage.TYPE_4BYTE_ABGR); } else { image = new BufferedImage(imageWidth, imageHeight, BufferedImage.TYPE_4BYTE_ABGR); } GTRenderer renderer = new StreamingRenderer(); renderer.setMapContent(content); Graphics2D g = (Graphics2D) image.getGraphics(); g.setRenderingHint(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_ON); g.setRenderingHint( RenderingHints.KEY_TEXT_ANTIALIASING, RenderingHints.VALUE_TEXT_ANTIALIAS_ON); if (isTile && bufferSize != 0.0d) { renderer.paint( g, new Rectangle(bufferedImageWidth, bufferedImageHeight), content.getViewport().getBounds()); try { image = image.getSubimage( (int) (imageWidth * bufferSize) / 2, (int) (imageWidth * bufferSize) / 2, imageWidth, imageHeight); } catch (Exception e) { log.error(e, "Image cropping failed"); } } else { renderer.paint(g, new Rectangle(imageWidth, imageHeight), content.getViewport().getBounds()); } content.dispose(); return image; }
@Override protected void paintScreenContext(Graphics2D g) { if (screenContext != null) { synchronized (screenContext) { try { // let's paint selection and phanton layers screenRenderer.setMapContent(screenContext); Rectangle clip = g.getClipBounds(); Point2D.Double lu = screen2Cartesian(clip.getLocation()); Point2D.Double br = screen2Cartesian(new Point(clip.x + clip.width, clip.y + clip.height)); Geometry aoiGeometry = constructRectyPolygonGeometry(lu, br); Envelope aoiEnvelope = new ReferencedEnvelope( aoiGeometry.getEnvelopeInternal(), screenContext.getCoordinateReferenceSystem()); screenRenderer.paint(g, clip, aoiEnvelope, cartesian2Screen); } catch (NoninvertibleTransformException ex) { Logger.getLogger(JGeoPane.class.getName()).log(Level.SEVERE, null, ex); } } } super.paintScreenContext(g); }
/** * Set the map context for this map pane to display * * @param content the map context */ public void setMapContent(MapContent content) { if (this.content != content) { if (this.content != null) { this.content.removeMapLayerListListener(this); // for( MapLayer layer : this.context.getLayers() ) { // if (layer instanceof ComponentListener) { // removeComponentListener((ComponentListener) layer); // } // } } this.content = content; if (content != null) { this.content.addMapLayerListListener(this); this.content.addMapBoundsListener(this); // set all layers as selected by default for the info tool for (Layer layer : content.layers()) { layer.setSelected(true); // if (layer instanceof ComponentListener) { // addComponentListener((ComponentListener) layer); // } } setFullExtent(); } if (renderer != null) { renderer.setMapContent(this.content); } MapPaneEvent ev = new MapPaneEvent(this, MapPaneEvent.Type.NEW_CONTEXT); publishEvent(ev); } }
/** * Set the renderer for this map pane. * * @param renderer the renderer to use */ public void setRenderer(GTRenderer renderer) { if (renderer != null) { Map<Object, Object> hints; if (renderer instanceof StreamingRenderer) { hints = renderer.getRendererHints(); if (hints == null) { hints = new HashMap<Object, Object>(); } if (hints.containsKey(StreamingRenderer.LABEL_CACHE_KEY)) { labelCache = (LabelCache) hints.get(StreamingRenderer.LABEL_CACHE_KEY); } else { labelCache = new LabelCacheImpl(); hints.put(StreamingRenderer.LABEL_CACHE_KEY, labelCache); } renderer.setRendererHints(hints); if (this.content != null) { renderer.setMapContent(this.content); } } } this.renderer = renderer; }