Beanshell:Loading an Image into the task
Jump to navigation
Jump to search
This script will load in image into the current task. Change minx, maxx, miny, maxy and filenameOrURL as desired.
{ minx = 100; maxx = 376; miny = 100; maxy = 210; //Image coordinates filenameOrURL = new URL("http://www.google.ca/intl/en_ca/images/logo.gif"); //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); wc.layerManager.addLayer(StandardCategoryNames.WORKING, layerName, FeatureDatasetFactory.createFromGeometry( Collections.singleton(EnvelopeUtil.toGeometry( new Envelope(minx, maxx, miny, maxy))))).addStyle(new Style() { public void paint(Feature f, Graphics2D g, Viewport viewport) { originalTransform = g.getTransform(); try { envelope = f.geometry.envelope; 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(envelope.minx, envelope.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; wc.layerManager.getLayer(layerName).getBasicStyle().renderingLine = false; }