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; }
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; }
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; }
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; }
final BufferedImageRendering imageRendering = new BufferedImageRendering(overlayBIm);
/** * 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; }
/** * 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; }