Revision: 6431 http://sourceforge.net/p/jump-pilot/code/6431 Author: ma15569 Date: 2020-09-07 07:40:36 +0000 (Mon, 07 Sep 2020) Log Message: ----------- Optimized code
Modified Paths: -------------- core/trunk/src/org/openjump/core/rasterimage/TiffUtils.java Modified: core/trunk/src/org/openjump/core/rasterimage/TiffUtils.java =================================================================== --- core/trunk/src/org/openjump/core/rasterimage/TiffUtils.java 2020-09-06 21:55:39 UTC (rev 6430) +++ core/trunk/src/org/openjump/core/rasterimage/TiffUtils.java 2020-09-07 07:40:36 UTC (rev 6431) @@ -23,6 +23,7 @@ import javax.imageio.stream.ImageInputStream; import javax.media.jai.JAI; import javax.media.jai.RenderedOp; +import javax.media.jai.util.ImagingListener; import javax.xml.parsers.ParserConfigurationException; import javax.xml.transform.TransformerConfigurationException; import javax.xml.transform.TransformerException; @@ -336,57 +337,54 @@ }*/ - //[Giuseppe Aruta 2020-02-09] whenever it is possible - // we use ImageIO-ext first to retrive the Image + //[Giuseppe Aruta 2020-07-09] whenever it is possible + // we use JAI Image I/O public static RenderedOp readSubsampled(File tiffFile, float xScale, float yScale) { - RenderedOp renderedOp = null; - try { - //We first try with gdal/ImageIO-ext - GeoReferencedRaster geoRaster = new GeoReferencedRaster(tiffFile.toURI().toString()); - renderedOp = geoRaster.getImage(); - } catch (ReferencedImageException e) { - //Then we use JAI - System.setProperty("com.sun.media.jai.disableMediaLib", "true"); - renderedOp = JAI.create("fileload", tiffFile.getAbsolutePath()); - - } - ParameterBlock parameterBlock = new ParameterBlock(); + RenderedOp renderedOp = getRenderedOp(tiffFile); + ParameterBlock parameterBlock = new ParameterBlock(); parameterBlock.addSource(renderedOp); parameterBlock.add(xScale); parameterBlock.add(yScale); renderedOp = JAI.create("scale", parameterBlock); - return JAI.create("scale", parameterBlock); - } + return JAI.create("scale", parameterBlock); + + } public static Double readCellValue(File tiffFile, int col, int row, int band) { - RenderedOp renderedOp = null; - Rectangle rectangle = new Rectangle(col, row, 1, 1); - try { - GeoReferencedRaster geoRaster = new GeoReferencedRaster(tiffFile.toURI().toString()); - renderedOp = geoRaster.getImage(); - } - catch (Exception e) { - System.setProperty("com.sun.media.jai.disableMediaLib", "true"); - renderedOp = javax.media.jai.JAI.create("fileload", - tiffFile.getAbsolutePath()); - } - return renderedOp.getData(rectangle) + + Rectangle rectangle = new Rectangle(col, row, 1, 1); + return getRenderedOp(tiffFile).getData(rectangle) .getSampleDouble(col, row, band); } public static RenderedOp getRenderedOp(File tiffFile) { + //Since JAI error messages are rerouted to OJ log + //I suppress the error message for absence of mediaLib accelerator + System.setProperty("com.sun.media.jai.disableMediaLib", "true"); RenderedOp renderedOp = null; try { + //First try with JAI Image I/O "ImageRead" GeoReferencedRaster geoRaster = new GeoReferencedRaster(tiffFile.toURI().toString()); renderedOp = geoRaster.getImage(); } catch (Exception e) { - System.setProperty("com.sun.media.jai.disableMediaLib", "true"); - renderedOp = javax.media.jai.JAI.create("fileload", + //Then with JAI "FileLoad" + //System.setProperty("com.sun.media.jai.disableMediaLib", "true"); + + // <GeoRaster.class> rerouted JAI error messages to OJ log here + JAI.getDefaultInstance().setImagingListener(new ImagingListener() { + @Override + public boolean errorOccurred(String msg, Throwable thrown, Object where, + boolean isRetryable) throws RuntimeException { + Logger.error(thrown); + return false; + } + }); + renderedOp = JAI.create("fileload", tiffFile.toURI().toString()); } return renderedOp; _______________________________________________ Jump-pilot-devel mailing list Jump-pilot-devel@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/jump-pilot-devel