@Test public void testGetPlaneCount() throws IOException, FormatException { writer.setMetadataRetrieve(metadata); writer.setSeries(0); assertEquals(WriterUtilities.SIZE_T * WriterUtilities.SIZE_Z * WriterUtilities.SIZE_C, writer.getPlaneCount()); metadata.setPixelsSizeC(new PositiveInteger(4), 0); metadata.setPixelsType(PixelType.INT16, 0); writer.setMetadataRetrieve(metadata); assertEquals(WriterUtilities.SIZE_T * WriterUtilities.SIZE_Z * 4, writer.getPlaneCount()); }
@Test public void testGetTileSizeX() throws IOException, FormatException { writer.setMetadataRetrieve(metadata); assertEquals(0, writer.getTileSizeX()); writer.close(); writer = new TiffWriter(); metadata.setPixelsSizeX(new PositiveInteger(100), 0); writer.setMetadataRetrieve(metadata); assertEquals(0, writer.getTileSizeX()); }
@Test public void testGetTileSizeY() throws IOException, FormatException { writer.setMetadataRetrieve(metadata); assertEquals(0, writer.getTileSizeY()); writer.close(); writer = new TiffWriter(); metadata.setPixelsSizeY(new PositiveInteger(100), 0); writer.setMetadataRetrieve(metadata); assertEquals(0, writer.getTileSizeY()); }
@Test public void testExplicitlyDisableTiling() { try { writer.setMetadataRetrieve(metadata); writer.setTileSizeX(0); assertEquals(0, writer.getTileSizeX()); writer.setTileSizeY(0); assertEquals(0, writer.getTileSizeY()); } catch (FormatException e) { assert(false); } }
@Test(dataProvider = "bigTiffSuffixes") public void testSetBigTiffSuffixes(String suffix) throws IOException, FormatException { //Test that no exception is thrown when bigTiff is set automatically due to size writer.setMetadataRetrieve(metadata); ((TiffWriterMock)writer).createOutputBuffer(true); long length = 4294967296L; ((TiffWriterMock)writer).setBufferLength(length); writer.setId("test." + suffix); boolean thrown = false; try { writer.saveBytes(0, buf, ifd); } catch(FormatException e) { thrown = true; } if (suffix.contains("tif")) { assertEquals(true,thrown); } else { assertEquals(false,thrown); } }
@Test public void testSetBigTiff() throws IOException, FormatException { //Test that no exception is thrown after setting big tiff writer.setMetadataRetrieve(metadata); ((TiffWriterMock)writer).createOutputBuffer(true); long length = 4294967296L - (buf.length * 2); ((TiffWriterMock)writer).setBufferLength(length); writer.setBigTiff(true); writer.setId("test.tiff"); writer.saveBytes(0, buf, ifd); }
@Test public void testSetTileSizeX() { writer.setMetadataRetrieve(metadata); try { for (int i = 16; i < WriterUtilities.SIZE_X; i+=16) { writer.setTileSizeX(i); assertEquals(i, writer.getTileSizeX()); } writer.setTileSizeX(WriterUtilities.SIZE_X); assertEquals(WriterUtilities.SIZE_X, writer.getTileSizeX()); for (int i = 1; i < 24; i++) { writer.setTileSizeX(i); assertEquals(16, writer.getTileSizeX()); } for (int i = 24; i < 40; i++) { writer.setTileSizeX(i); assertEquals(32, writer.getTileSizeX()); } } catch(FormatException fe) { assert(false); } }
@Test public void testSetTileSizeY() { writer.setMetadataRetrieve(metadata); try { for (int i = 16; i < WriterUtilities.SIZE_Y; i+=16) { writer.setTileSizeY(i); assertEquals(i, writer.getTileSizeY()); } writer.setTileSizeY(WriterUtilities.SIZE_Y); assertEquals(WriterUtilities.SIZE_Y, writer.getTileSizeY()); for (int i = 1; i < 24; i++) { writer.setTileSizeY(i); assertEquals(16, writer.getTileSizeY()); } for (int i = 24; i < 40; i++) { writer.setTileSizeY(i); assertEquals(32, writer.getTileSizeY()); } } catch(FormatException fe) { assert(false); } }
@Test public void testSetBigTiffAutomatic() throws IOException, FormatException { //Test that no exception is thrown when bigTiff is set automatically due to size metadata.setPixelsSizeT(new PositiveInteger(1000), 0); writer.setMetadataRetrieve(metadata); ((TiffWriterMock)writer).createOutputBuffer(true); long length = 4294967296L; ((TiffWriterMock)writer).setBufferLength(length); writer.setId("test.tiff"); writer.saveBytes(0, buf, ifd); }
@Test public void testSetBigTiffFileTooLarge() throws IOException, FormatException { // Test that no exception is thrown while below the big tiff limit (2147483648L) // Exception is thrown when size is out.length() + 2 * (width * height * c * bytesPerPixel) writer.setMetadataRetrieve(metadata); ((TiffWriterMock)writer).createOutputBuffer(true); long length = 4294967296L - (buf.length * 4); ((TiffWriterMock)writer).setBufferLength(length); writer.setId("test.tiff"); writer.saveBytes(0, buf, ifd); //Test format exception is thrown after the big tiff limit (2147483648L) boolean thrown = false; try { writer.saveBytes(1, buf, ifd); } catch(FormatException e) { if (e.getMessage().contains("File is too large; call setBigTiff(true)")) { thrown = true; } } assert(thrown); }
/** * Initializes the writer. * @param output The file where to write the compressed data. * @param compression The compression to use. * @param bigTiff Pass <code>true</code> to set the <code>bigTiff</code> flag, * <code>false</code> otherwise. * @return See above. * @throws Exception Thrown if an error occurred. */ private TiffWriter initializeWriter(String output, String compression, boolean bigTiff) throws Exception { IMetadata newMetadata = service.createOMEXMLMetadata(); MetadataConverter.convertMetadata(metadata, newMetadata); TiffWriter writer = new TiffWriter(); writer.setMetadataRetrieve(newMetadata); writer.setCompression(compression); writer.setWriteSequentially(true); writer.setInterleaved(false); writer.setBigTiff(bigTiff); writer.setId(output); return writer; }
writer.setMetadataRetrieve(metadata); thrown = false; try {
metadata.setChannelSamplesPerPixel(new PositiveInteger(1), 0, 0); writer = new TiffWriter(); writer.setMetadataRetrieve(metadata); writer.setCompression(compression); writer.setWriteSequentially(false);
public static Plane writeImage(String file, int tileSize, boolean littleEndian, boolean interleaved, int rgbChannels, int seriesCount, int sizeT, String compression, int pixelType, boolean bigTiff) throws Exception { TiffWriter writer = new TiffWriter(); String pixelTypeString = FormatTools.getPixelTypeString(pixelType); writer.setMetadataRetrieve(createMetadata(pixelTypeString, rgbChannels, seriesCount, littleEndian, sizeT)); writer.setCompression(compression); writer.setInterleaved(interleaved); writer.setBigTiff(bigTiff); if (tileSize != 0) { writer.setTileSizeX(tileSize); writer.setTileSizeY(tileSize); } writer.setId(file); int bytes = FormatTools.getBytesPerPixel(pixelType); byte[] plane = getPlane(PLANE_WIDTH, PLANE_HEIGHT, bytes * rgbChannels); Plane originalPlane = new Plane(plane, littleEndian, !writer.isInterleaved(), rgbChannels, FormatTools.getPixelTypeString(pixelType)); for (int s=0; s<seriesCount; s++) { writer.setSeries(s); for (int t=0; t<sizeT; t++) { writer.saveBytes(t, plane); } } writer.close(); return originalPlane; }