/** * */ package org.geotools.utils.imageoverviews; import it.geosolutions.imageioimpl.plugins.tiff.TIFFImageReaderSpi; import java.io.File; import java.io.FileNotFoundException; import java.io.IOException; import java.util.logging.Logger; import javax.imageio.ImageIO; import javax.imageio.ImageReader; import javax.media.jai.JAI; import junit.framework.Assert; import org.apache.commons.io.FileUtils; import org.apache.commons.io.IOUtils; import org.geotools.test.TestData; import org.geotools.util.logging.Logging; import org.geotools.utils.progress.ExceptionEvent; import org.geotools.utils.progress.ProcessingEvent; import org.geotools.utils.progress.ProcessingEventListener; import org.junit.After; import org.junit.AfterClass; import org.junit.Before; import org.junit.BeforeClass; import org.junit.Ignore; import org.junit.Test; /** * Testing {@link OverviewsEmbedder}. * * @author Simone Giannecchini, GeoSolutions SAS * */ public class OverviewEmbedderTest extends Assert{ private final static Logger LOGGER = Logging.getLogger(OverviewEmbedderTest.class); /** * @throws java.lang.Exception */ @BeforeClass public static void setUpBeforeClass() throws Exception { } /** * @throws java.lang.Exception */ @AfterClass public static void tearDownAfterClass() throws Exception { } /** * @throws java.lang.Exception */ @Before public void setUp() throws Exception { File inputFile=TestData.file(this, "DEM.tiff"); FileUtils.copyFile(inputFile, new File(inputFile.getParent(), "DEM_.tiff")); } /** * @throws java.lang.Exception */ @After public void tearDown() throws Exception { FileUtils.deleteQuietly(TestData.temp(this, "DEM_.tiff")); } @Test public void nearest() throws FileNotFoundException, IOException{ // JAI.getDefaultInstance().getTileCache().setMemoryCapacity(512*1024*1024); // JAI.getDefaultInstance().getTileScheduler().setParallelism(10); // JAI.getDefaultInstance().getTileScheduler().setPrefetchParallelism(10); final OverviewsEmbedder oe= new OverviewsEmbedder(); oe.setDownsampleStep(2); oe.setNumSteps(5); oe.setScaleAlgorithm(OverviewsEmbedder.SubsampleAlgorithm.Nearest.toString()); // use default oe.setTileCache(JAI.getDefaultInstance().getTileCache()); oe.setTileWidth(256); oe.setTileHeight(256); oe.setSourcePath(TestData.file(this, "DEM_.tiff").getAbsolutePath()); oe.addProcessingEventListener(new ProcessingEventListener() { @Override public void getNotification(ProcessingEvent event) { LOGGER.info(event.toString()); } @Override public void exceptionOccurred(ExceptionEvent event) { LOGGER.warning(event.toString()); } }); oe.run(); // now red it back and check that things are coherent final ImageReader reader= new TIFFImageReaderSpi().createReaderInstance(); reader.setInput(ImageIO.createImageInputStream(org.geotools.test.TestData.file(this, "DEM_.tiff"))); assertTrue(reader.getNumImages(true)==6); } @Test public void average() throws FileNotFoundException, IOException{ // JAI.getDefaultInstance().getTileCache().setMemoryCapacity(512*1024*1024); // JAI.getDefaultInstance().getTileScheduler().setParallelism(10); // JAI.getDefaultInstance().getTileScheduler().setPrefetchParallelism(10); final OverviewsEmbedder oe= new OverviewsEmbedder(); oe.setDownsampleStep(2); oe.setNumSteps(5); oe.setScaleAlgorithm(OverviewsEmbedder.SubsampleAlgorithm.Average.toString()); // use default oe.setTileCache(JAI.getDefaultInstance().getTileCache()); oe.setTileWidth(256); oe.setTileHeight(256); oe.setSourcePath(TestData.file(this, "DEM_.tiff").getAbsolutePath()); oe.addProcessingEventListener(new ProcessingEventListener() { @Override public void getNotification(ProcessingEvent event) { LOGGER.info(event.toString()); } @Override public void exceptionOccurred(ExceptionEvent event) { LOGGER.warning(event.toString()); } }); oe.run(); // now red it back and check that things are coherent final ImageReader reader= new TIFFImageReaderSpi().createReaderInstance(); reader.setInput(ImageIO.createImageInputStream(org.geotools.test.TestData.file(this, "DEM_.tiff"))); assertTrue(reader.getNumImages(true)==6); } @Test public void bicubic() throws FileNotFoundException, IOException{ // JAI.getDefaultInstance().getTileCache().setMemoryCapacity(512*1024*1024); // JAI.getDefaultInstance().getTileScheduler().setParallelism(10); // JAI.getDefaultInstance().getTileScheduler().setPrefetchParallelism(10); final OverviewsEmbedder oe= new OverviewsEmbedder(); oe.setDownsampleStep(2); oe.setNumSteps(5); oe.setScaleAlgorithm(OverviewsEmbedder.SubsampleAlgorithm.Bicubic.toString()); // use default oe.setTileCache(JAI.getDefaultInstance().getTileCache()); oe.setTileWidth(256); oe.setTileHeight(256); oe.setSourcePath(TestData.file(this, "DEM_.tiff").getAbsolutePath()); oe.addProcessingEventListener(new ProcessingEventListener() { @Override public void getNotification(ProcessingEvent event) { LOGGER.info(event.toString()); } @Override public void exceptionOccurred(ExceptionEvent event) { LOGGER.warning(event.toString()); } }); oe.run(); // now red it back and check that things are coherent final ImageReader reader= new TIFFImageReaderSpi().createReaderInstance(); reader.setInput(ImageIO.createImageInputStream(org.geotools.test.TestData.file(this, "DEM_.tiff"))); assertTrue(reader.getNumImages(true)==6); } @Test public void bilinear() throws FileNotFoundException, IOException{ // JAI.getDefaultInstance().getTileCache().setMemoryCapacity(512*1024*1024); // JAI.getDefaultInstance().getTileScheduler().setParallelism(10); // JAI.getDefaultInstance().getTileScheduler().setPrefetchParallelism(10); final OverviewsEmbedder oe= new OverviewsEmbedder(); oe.setDownsampleStep(2); oe.setNumSteps(5); oe.setScaleAlgorithm(OverviewsEmbedder.SubsampleAlgorithm.Bilinear.toString()); // use default oe.setTileCache(JAI.getDefaultInstance().getTileCache()); oe.setTileWidth(256); oe.setTileHeight(256); oe.setSourcePath(TestData.file(this, "DEM_.tiff").getAbsolutePath()); oe.addProcessingEventListener(new ProcessingEventListener() { @Override public void getNotification(ProcessingEvent event) { LOGGER.info(event.toString()); } @Override public void exceptionOccurred(ExceptionEvent event) { LOGGER.warning(event.toString()); } }); oe.run(); // now red it back and check that things are coherent final ImageReader reader= new TIFFImageReaderSpi().createReaderInstance(); reader.setInput(ImageIO.createImageInputStream(org.geotools.test.TestData.file(this, "DEM_.tiff"))); assertTrue(reader.getNumImages(true)==6); } @Test public void filtered() throws FileNotFoundException, IOException{ // JAI.getDefaultInstance().getTileCache().setMemoryCapacity(512*1024*1024); // JAI.getDefaultInstance().getTileScheduler().setParallelism(10); // JAI.getDefaultInstance().getTileScheduler().setPrefetchParallelism(10); final OverviewsEmbedder oe= new OverviewsEmbedder(); oe.setDownsampleStep(2); oe.setNumSteps(5); oe.setScaleAlgorithm(OverviewsEmbedder.SubsampleAlgorithm.Filtered.toString()); // use default oe.setTileCache(JAI.getDefaultInstance().getTileCache()); oe.setTileWidth(256); oe.setTileHeight(256); oe.setSourcePath(TestData.file(this, "DEM_.tiff").getAbsolutePath()); oe.addProcessingEventListener(new ProcessingEventListener() { @Override public void getNotification(ProcessingEvent event) { LOGGER.info(event.toString()); } @Override public void exceptionOccurred(ExceptionEvent event) { LOGGER.warning(event.toString()); } }); oe.run(); // now red it back and check that things are coherent final ImageReader reader= new TIFFImageReaderSpi().createReaderInstance(); reader.setInput(ImageIO.createImageInputStream(org.geotools.test.TestData.file(this, "DEM_.tiff"))); assertTrue(reader.getNumImages(true)==2); } // @Test // public void wrong() throws FileNotFoundException, IOException{ // // JAI.getDefaultInstance().getTileCache().setMemoryCapacity(512*1024*1024); // // JAI.getDefaultInstance().getTileScheduler().setParallelism(10); // // JAI.getDefaultInstance().getTileScheduler().setPrefetchParallelism(10); // // final OverviewsEmbedder oe= new OverviewsEmbedder(); // oe.setDownsampleStep(0); // oe.setNumSteps(-3); // oe.setScaleAlgorithm("geosolutionsrocks!"); // // use default // oe.setTileCache(JAI.getDefaultInstance().getTileCache()); // oe.setTileWidth(0); // oe.setTileHeight(256); // oe.setSourcePath(TestData.file(this, "DEM_.tiff").getAbsolutePath()); // oe.addProcessingEventListener(new ProcessingEventListener() { // // @Override // public void getNotification(ProcessingEvent event) { // LOGGER.info(event.toString()); // // } // // @Override // public void exceptionOccurred(ExceptionEvent event) { // LOGGER.warning(event.toString()); // } // // }); // oe.run(); // // // // } }