tiffContents = getBinary(response);
File fileOverviewSF = File.createTempFile("overviewSF", "overviewSF.tiff", new File("./target"));
FileUtils.writeByteArrayToFile(fileOverviewSF, tiffContents);
TIFFImageReaderSpi spi = new TIFFImageReaderSpi();
TIFFImageReader readerNative = null;
TIFFImageReader readerOverviewTS = null;
TIFFImageReader readerOverviewSF = null;
FileImageInputStream streamNative = null;
FileImageInputStream streamOverviewTS = null;
FileImageInputStream streamOverviewSF = null;
try {
streamNative = new FileImageInputStream(fileNative);
readerNative = (TIFFImageReader) spi.createReaderInstance();
readerNative.setInput(streamNative);
streamOverviewTS = new FileImageInputStream(fileOverviewTS);
readerOverviewTS = (TIFFImageReader) spi.createReaderInstance();
readerOverviewTS.setInput(streamOverviewTS);
streamOverviewSF = new FileImageInputStream(fileOverviewSF);
readerOverviewSF = (TIFFImageReader) spi.createReaderInstance();
readerOverviewSF.setInput(streamOverviewSF);
// Reading back first image related to native request
RenderedImage riNative = readerNative.read(0);
Raster rasterNative = riNative.getData();
assertEquals(180, rasterNative.getWidth());
assertEquals(180, rasterNative.getHeight());
final int refX = 11;
final int refY = 65;
final int r1 = rasterNative.getSample(refX, refY, 0);
final int g1 = rasterNative.getSample(refX, refY, 1);
final int b1 = rasterNative.getSample(refX, refY, 2);
// Reading back second image related to request using overviews
final RenderedImage riOverviewTS = readerOverviewTS.read(0);
final Raster rasterOverviewTS = riOverviewTS.getData();
assertEquals(180, rasterOverviewTS.getWidth());
assertEquals(180, rasterOverviewTS.getHeight());
final int r2 = rasterOverviewTS.getSample(refX, refY, 0);
final int g2 = rasterOverviewTS.getSample(refX, refY, 1);
final int b2 = rasterOverviewTS.getSample(refX, refY, 2);
// Reading back third image related to request using overviews and scale factor
final RenderedImage riOverviewSF = readerOverviewSF.read(0);
final Raster rasterOverviewSF = riOverviewSF.getData();
assertEquals(180, rasterOverviewSF.getWidth());
assertEquals(180, rasterOverviewSF.getHeight());
final int r3 = rasterOverviewSF.getSample(refX, refY, 0);
final int g3 = rasterOverviewSF.getSample(refX, refY, 1);
final int b3 = rasterOverviewSF.getSample(refX, refY, 2);
// Checking the pixels are different
assertTrue(r1 != r2);
assertTrue(g1 != g2);
assertTrue(b1 != b2);
// Checking the pixels from quality overviews using same layout are equals
assertEquals(r2, r3);
assertEquals(g2, g3);
assertEquals(b2, b3);
} finally {
IOUtils.closeQuietly(streamOverviewTS);
IOUtils.closeQuietly(streamOverviewSF);
IOUtils.closeQuietly(streamNative);
if (readerOverviewTS != null) {
try {
readerOverviewTS.dispose();
} catch (Throwable t) {
// Does nothing
}
}
if (readerOverviewSF != null) {
try {
readerOverviewSF.dispose();
} catch (Throwable t) {
// Does nothing
}
}
if (readerNative != null) {