Beanshell:Create an image layer from a file or URL
Jump to navigation
Jump to search
The printable version is no longer supported and may have rendering errors. Please update your browser bookmarks and please use the default browser print function instead.
This awesome idea was requested by Andrew Collins and took me two hours to write. It's a BeanShell script to create an image layer from a GIF, JPEG, or PNG file or URL
- Click View > BeanShell.
- Copy the code below into the clipboard.
- Paste the code into the BeanShell window with Ctrl+V. JUMP will create the image layer!
{ minx = 100; maxx = 952; miny = 100; maxy = 489; //Image coordinates filenameOrURL = new URL("http://www.apsu.edu/field_biology/center/sym2001/fig1p66.jpg"); //filenameOrURL = "c:/junk/Arrow.jpg"; layerName = "Image"; image = Toolkit.getDefaultToolkit().getImage(filenameOrURL); import com.vividsolutions.jts.geom.*; import com.vividsolutions.jump.feature.*; import com.vividsolutions.jump.geom.EnvelopeUtil; import com.vividsolutions.jump.workbench.model.*; import com.vividsolutions.jump.workbench.ui.renderer.style.Style; import com.vividsolutions.jump.workbench.ui.Viewport; mediaTracker = new MediaTracker(wc.layerViewPanel); mediaTracker.addImage(image, 0); mediaTracker.waitForID(0); envelope = new Envelope(minx, maxx, miny, maxy); wc.layerManager.addLayer(StandardCategoryNames.WORKING, layerName, FeatureDatasetFactory.createFromGeometry( Collections.singleton(EnvelopeUtil.toGeometry(envelope)))) .addStyle(new Style() { public void paint(Feature f, Graphics2D g, Viewport viewport) { originalTransform = g.getTransform(); try { xScale = viewport.scale*envelope.width/image.getWidth(null); yScale = viewport.scale*envelope.height/image.getHeight(null); g.scale(xScale, yScale); upperLeftCorner = viewport.toViewPoint(new Coordinate(minx, maxy)); g.translate(upperLeftCorner.x/xScale, upperLeftCorner.y/yScale); g.drawImage(image, 0, 0, null); } finally { g.setTransform(originalTransform); } } public void initialize(Layer layer) {} public Object clone() { throw new UnsupportedOperationException(); } public void setEnabled(boolean enabled) {} public boolean isEnabled() { return true; } }); wc.layerManager.getLayer(layerName).getBasicStyle().renderingFill = false;