private static BufferedImageRendering createRendering(ProductSceneView view, boolean fullScene, boolean geoReferenced, BufferedImage bufferedImage) { final Viewport vp1 = view.getLayerCanvas().getViewport(); final Viewport vp2 = new DefaultViewport(new Rectangle(bufferedImage.getWidth(), bufferedImage.getHeight()), vp1.isModelYAxisDown()); if (fullScene) { vp2.zoom(view.getBaseImageLayer().getModelBounds()); } else { setTransform(vp1, vp2); } final BufferedImageRendering imageRendering = new BufferedImageRendering(bufferedImage, vp2); if (geoReferenced) { // because image to model transform is stored with the exported image we have to invert // image to view transformation final AffineTransform m2iTransform = view.getBaseImageLayer().getModelToImageTransform(0); final AffineTransform v2mTransform = vp2.getViewToModelTransform(); v2mTransform.preConcatenate(m2iTransform); final AffineTransform v2iTransform = new AffineTransform(v2mTransform); final Graphics2D graphics2D = imageRendering.getGraphics(); v2iTransform.concatenate(graphics2D.getTransform()); graphics2D.setTransform(v2iTransform); } return imageRendering; }
static RenderedImage createImage(ProductSceneView view, boolean fullScene, Dimension dimension, boolean alphaChannel, boolean geoReferenced) { final int imageType = alphaChannel ? BufferedImage.TYPE_4BYTE_ABGR : BufferedImage.TYPE_3BYTE_BGR; final BufferedImage bufferedImage = new BufferedImage(dimension.width, dimension.height, imageType); final BufferedImageRendering imageRendering = createRendering(view, fullScene, geoReferenced, bufferedImage); if (!alphaChannel) { final Graphics2D graphics = imageRendering.getGraphics(); graphics.setColor(view.getLayerCanvas().getBackground()); graphics.fillRect(0, 0, dimension.width, dimension.height); } view.getRootLayer().render(imageRendering); return bufferedImage; }
/** * Reads the world map image from disk if not yet loaded, otherwise * it is just returning the image. * <p> * If the world map image cannot be read an image with an error message is returned. * * @param highRes specifies if the high-resolution image shall be returned, * * @return the world map image */ public static BufferedImage getWorldMapImage(boolean highRes) { if (worldMapImage == null || isHighRes() != highRes) { setHighRes(highRes); LayerType layerType = LayerTypeRegistry.getLayerType("org.esa.snap.worldmap.BlueMarbleLayerType"); if (layerType == null) { worldMapImage = createErrorImage(); } else { final CollectionLayer rootLayer = new CollectionLayer(); Layer worldMapLayer = layerType.createLayer(new WorldMapLayerContext(rootLayer), new PropertyContainer()); Dimension dimension = highRes ? HI_RES_DIMENSION : LOW_RES_DIMENSION; final BufferedImageRendering biRendering = new BufferedImageRendering(dimension.width, dimension.height); biRendering.getViewport().setModelYAxisDown(false); biRendering.getViewport().zoom(worldMapLayer.getModelBounds()); worldMapLayer.render(biRendering); worldMapImage = biRendering.getImage(); } } return worldMapImage; }
final BufferedImageRendering imageRendering = new BufferedImageRendering(overlayBIm); pm.done(); return imageRendering.getImage();
public void handleViewChanged(ProductSceneView oldView, ProductSceneView newView) { if (debug) { System.out.println("NavigationCanvas.handleViewChanged(): " + System.currentTimeMillis()); System.out.println(" oldView = " + (oldView == null ? "null" : oldView.getSceneName())); System.out.println(" newView = " + (newView == null ? "null" : newView.getSceneName())); } if (oldView != null) { Viewport observedViewport = oldView.getLayerCanvas().getViewport(); observedViewport.removeListener(observedViewportHandler); } if (newView != null) { Viewport observedViewport = newView.getLayerCanvas().getViewport(); observedViewport.addListener(observedViewportHandler); final Rectangle bounds; if (getBounds().isEmpty()) { bounds = new Rectangle(0, 0, 100, 100); } else { bounds = getBounds(); } Viewport thumbnailViewport = new DefaultViewport(bounds, observedViewport.isModelYAxisDown()); thumbnailViewport.setOrientation(observedViewport.getOrientation()); LayerCanvasModel thumbnailCanvasModel = new DefaultLayerCanvasModel(newView.getRootLayer(), thumbnailViewport); thumbnailCanvas.setModel(thumbnailCanvasModel); thumbnailCanvas.zoomAll(); } else { thumbnailCanvas.setModel(NULL_MODEL); } updateMoveSliderRect(); }
private static BufferedImageRendering createRendering(ProductSceneView view, boolean fullScene, boolean geoReferenced, BufferedImage bufferedImage) { final Viewport vp1 = view.getLayerCanvas().getViewport(); final Viewport vp2 = new DefaultViewport(new Rectangle(bufferedImage.getWidth(), bufferedImage.getHeight()), vp1.isModelYAxisDown()); if (fullScene) { vp2.zoom(view.getBaseImageLayer().getModelBounds()); } else { setTransform(vp1, vp2); } final BufferedImageRendering imageRendering = new BufferedImageRendering(bufferedImage, vp2); if (geoReferenced) { // because image to model transform is stored with the exported image we have to invert // image to view transformation final AffineTransform m2iTransform = view.getBaseImageLayer().getModelToImageTransform(0); final AffineTransform v2mTransform = vp2.getViewToModelTransform(); v2mTransform.preConcatenate(m2iTransform); final AffineTransform v2iTransform = new AffineTransform(v2mTransform); final Graphics2D graphics2D = imageRendering.getGraphics(); v2iTransform.concatenate(graphics2D.getTransform()); graphics2D.setTransform(v2iTransform); } return imageRendering; }
/** * Reads the world map image from disk if not yet loaded, otherwise * it is just returning the image. * <p/> * If the world map image cannot be read an image with an error message is returned. * * @param highRes specifies if the high-resolution image shall be returned, * * @return the world map image */ public static BufferedImage getWorldMapImage(boolean highRes) { if (worldMapImage == null || isHighRes() != highRes) { setHighRes(highRes); LayerType layerType = LayerTypeRegistry.getLayerType("org.esa.beam.worldmap.BlueMarbleLayerType"); if (layerType == null) { worldMapImage = createErrorImage(); } else { final CollectionLayer rootLayer = new CollectionLayer(); Layer worldMapLayer = layerType.createLayer(new WorldMapLayerContext(rootLayer), new PropertyContainer()); Dimension dimension = highRes ? HI_RES_DIMENSION : LOW_RES_DIMENSION; final BufferedImageRendering biRendering = new BufferedImageRendering(dimension.width, dimension.height); biRendering.getViewport().setModelYAxisDown(false); biRendering.getViewport().zoom(worldMapLayer.getModelBounds()); worldMapLayer.render(biRendering); worldMapImage = biRendering.getImage(); } } return worldMapImage; }
void handleViewChanged(ProductSceneView oldView, ProductSceneView newView) { if (debug) { System.out.println("NavigationCanvas.handleViewChanged(): " + System.currentTimeMillis()); System.out.println(" oldView = " + (oldView == null ? "null" : oldView.getSceneName())); System.out.println(" newView = " + (newView == null ? "null" : newView.getSceneName())); } if (oldView != null) { Viewport observedViewport = oldView.getLayerCanvas().getViewport(); observedViewport.removeListener(observedViewportHandler); } if (newView != null) { Viewport observedViewport = newView.getLayerCanvas().getViewport(); observedViewport.addListener(observedViewportHandler); final Rectangle bounds; if (getBounds().isEmpty()) { bounds = new Rectangle(0, 0, 100, 100); } else { bounds = getBounds(); } Viewport thumbnailViewport = new DefaultViewport(bounds, observedViewport.isModelYAxisDown()); thumbnailViewport.setOrientation(observedViewport.getOrientation()); LayerCanvasModel thumbnailCanvasModel = new DefaultLayerCanvasModel(newView.getRootLayer(), thumbnailViewport); thumbnailCanvas.setModel(thumbnailCanvasModel); thumbnailCanvas.zoomAll(); } else { thumbnailCanvas.setModel(NULL_MODEL); } updateMoveSliderRect(); }
static RenderedImage createImage(ProductSceneView view, boolean fullScene, Dimension dimension, boolean alphaChannel, boolean geoReferenced) { final int imageType = alphaChannel ? BufferedImage.TYPE_4BYTE_ABGR : BufferedImage.TYPE_3BYTE_BGR; final BufferedImage bufferedImage = new BufferedImage(dimension.width, dimension.height, imageType); final BufferedImageRendering imageRendering = createRendering(view, fullScene, geoReferenced, bufferedImage); if (!alphaChannel) { final Graphics2D graphics = imageRendering.getGraphics(); graphics.setColor(view.getLayerCanvas().getBackground()); graphics.fillRect(0, 0, dimension.width, dimension.height); } view.getRootLayer().render(imageRendering); return bufferedImage; }
private BufferedImage createThumbNailImage(Dimension imgSize, ProgressMonitor pm) { Assert.notNull(pm, "pm"); String thumbNailBandName = getThumbnailBandName(); Band thumbNailBand = product.getBand(thumbNailBandName); Debug.trace("ProductSubsetDialog: Reading thumbnail data for band '" + thumbNailBandName + "'..."); pm.beginTask("Creating thumbnail image", 5); BufferedImage image = null; try { MultiLevelSource multiLevelSource = ColoredBandImageMultiLevelSource.create(thumbNailBand, SubProgressMonitor.create(pm, 1)); final ImageLayer imageLayer = new ImageLayer(multiLevelSource); final int imageWidth = imgSize.width; final int imageHeight = imgSize.height; final int imageType = BufferedImage.TYPE_3BYTE_BGR; image = new BufferedImage(imageWidth, imageHeight, imageType); Viewport snapshotVp = new DefaultViewport(isModelYAxisDown(imageLayer)); final BufferedImageRendering imageRendering = new BufferedImageRendering(image, snapshotVp); final Graphics2D graphics = imageRendering.getGraphics(); graphics.setColor(getBackground()); graphics.fillRect(0, 0, imageWidth, imageHeight); snapshotVp.zoom(imageLayer.getModelBounds()); snapshotVp.moveViewDelta(snapshotVp.getViewBounds().x, snapshotVp.getViewBounds().y); imageLayer.render(imageRendering); pm.worked(4); } finally { pm.done(); } return image; }
DefaultViewport viewport = new DefaultViewport(isModelYAxisDown(baseImageLayer));
private BufferedImage createThumbNailImage(Dimension imgSize, ProgressMonitor pm) { Assert.notNull(pm, "pm"); String thumbNailBandName = getThumbnailBandName(); Band thumbNailBand = product.getBand(thumbNailBandName); Debug.trace("ProductSubsetDialog: Reading thumbnail data for band '" + thumbNailBandName + "'..."); pm.beginTask("Creating thumbnail image", 5); BufferedImage image = null; try { MultiLevelSource multiLevelSource = BandImageMultiLevelSource.create(thumbNailBand, SubProgressMonitor.create(pm, 1)); final ImageLayer imageLayer = new ImageLayer(multiLevelSource); final int imageWidth = imgSize.width; final int imageHeight = imgSize.height; final int imageType = BufferedImage.TYPE_3BYTE_BGR; image = new BufferedImage(imageWidth, imageHeight, imageType); Viewport snapshotVp = new DefaultViewport(isModelYAxisDown(imageLayer)); final BufferedImageRendering imageRendering = new BufferedImageRendering(image, snapshotVp); final Graphics2D graphics = imageRendering.getGraphics(); graphics.setColor(getBackground()); graphics.fillRect(0, 0, imageWidth, imageHeight); snapshotVp.zoom(imageLayer.getModelBounds()); snapshotVp.moveViewDelta(snapshotVp.getViewBounds().x, snapshotVp.getViewBounds().y); imageLayer.render(imageRendering); pm.worked(4); } finally { pm.done(); } return image; }
DefaultViewport viewport = new DefaultViewport(isModelYAxisDown(baseImageLayer));