/** * Constructs a new TIFF saver from the given filename. * @param filename Filename of the output stream that we may use to create * extra input or output streams as required. */ public TiffSaver(String filename) throws IOException { this(new RandomAccessOutputStream(filename), filename); }
/** * Constructs a new TIFF saver from the given filename. * @param filename Filename of the output stream that we may use to create * extra input or output streams as required. */ public TiffSaver(String filename) throws IOException { this(new RandomAccessOutputStream(filename), filename); }
protected RandomAccessOutputStream createOutputStream() throws IOException { return new RandomAccessOutputStream(currentId); }
protected RandomAccessOutputStream createOutputStream() throws IOException { return new RandomAccessOutputStream(currentId); }
@Override public void saveStart(File tempFile) throws IOException { this.saveStream = new RandomAccessOutputStream(tempFile.getAbsolutePath()); }
@Override public void saveStart(File tempFile) throws IOException { this.saveStream = new RandomAccessOutputStream(tempFile.getAbsolutePath()); }
@Override protected RandomAccessOutputStream createOutputStream() throws IOException { return new RandomAccessOutputStream(handle); }
/** * Overwrites the comment. * * @param file The path to the file to handle. * @param comment The new comment to write. */ private static void overwriteComment(String file, String comment) { try (RandomAccessInputStream in = new RandomAccessInputStream(file); RandomAccessOutputStream out = new RandomAccessOutputStream(file)) { TiffSaver saver = new TiffSaver(out, file); saver.overwriteComment(in, comment); } catch (Exception e) { System.out.println(e.toString()); } } }
public void saveFile(File f) { String path = f.getAbsolutePath(); try (RandomAccessInputStream in = new RandomAccessInputStream(path); RandomAccessOutputStream out = new RandomAccessOutputStream(path)){ String xml = getXML(); TiffSaver saver = new TiffSaver(out, path); saver.overwriteComment(in, xml); } catch (FormatException exc) { showError(exc); } catch (IOException exc) { showError(exc); } }
public void saveFile(File f) { String path = f.getAbsolutePath(); try (RandomAccessInputStream in = new RandomAccessInputStream(path); RandomAccessOutputStream out = new RandomAccessOutputStream(path)){ String xml = getXML(); TiffSaver saver = new TiffSaver(out, path); saver.overwriteComment(in, xml); } catch (FormatException exc) { showError(exc); } catch (IOException exc) { showError(exc); } }
public void writeIFD(IFD ifd, long nextOffset) throws FormatException, IOException { TreeSet<Integer> keys = new TreeSet<Integer>(ifd.keySet()); int keyCount = keys.size(); if (ifd.containsKey(new Integer(IFD.LITTLE_ENDIAN))) keyCount--; if (ifd.containsKey(new Integer(IFD.BIG_TIFF))) keyCount--; if (ifd.containsKey(new Integer(IFD.REUSE))) keyCount--; long fp = out.getFilePointer(); int bytesPerEntry = bigTiff ? TiffConstants.BIG_TIFF_BYTES_PER_ENTRY : TiffConstants.BYTES_PER_ENTRY; int ifdBytes = (bigTiff ? 16 : 6) + bytesPerEntry * keyCount; if (bigTiff) out.writeLong(keyCount); else out.writeShort(keyCount); ByteArrayHandle extra = new ByteArrayHandle(); RandomAccessOutputStream extraStream = new RandomAccessOutputStream(extra); for (Integer key : keys) { if (key.equals(IFD.LITTLE_ENDIAN) || key.equals(IFD.BIG_TIFF) || key.equals(IFD.REUSE)) continue; Object value = ifd.get(key); writeIFDValue(extraStream, ifdBytes + fp, key.intValue(), value); } if (bigTiff) out.seek(out.getFilePointer()); writeIntValue(out, nextOffset); out.write(extra.getBytes(), 0, (int) extra.length()); extraStream.close(); }
public void writeIFD(IFD ifd, long nextOffset) throws FormatException, IOException { TreeSet<Integer> keys = new TreeSet<Integer>(ifd.keySet()); int keyCount = keys.size(); if (ifd.containsKey(new Integer(IFD.LITTLE_ENDIAN))) keyCount--; if (ifd.containsKey(new Integer(IFD.BIG_TIFF))) keyCount--; if (ifd.containsKey(new Integer(IFD.REUSE))) keyCount--; long fp = out.getFilePointer(); int bytesPerEntry = bigTiff ? TiffConstants.BIG_TIFF_BYTES_PER_ENTRY : TiffConstants.BYTES_PER_ENTRY; int ifdBytes = (bigTiff ? 16 : 6) + bytesPerEntry * keyCount; if (bigTiff) out.writeLong(keyCount); else out.writeShort(keyCount); ByteArrayHandle extra = new ByteArrayHandle(); RandomAccessOutputStream extraStream = new RandomAccessOutputStream(extra); for (Integer key : keys) { if (key.equals(IFD.LITTLE_ENDIAN) || key.equals(IFD.BIG_TIFF) || key.equals(IFD.REUSE)) continue; Object value = ifd.get(key); writeIFDValue(extraStream, ifdBytes + fp, key.intValue(), value); } if (bigTiff) out.seek(out.getFilePointer()); writeIntValue(out, nextOffset); out.write(extra.getBytes(), 0, (int) extra.length()); extraStream.close(); }
private void saveComment(String file, String xml) throws IOException { if (out != null) out.close(); out = new RandomAccessOutputStream(file); RandomAccessInputStream in = null; try { TiffSaver saver = new TiffSaver(out, file); saver.setBigTiff(isBigTiff); in = new RandomAccessInputStream(file); saver.overwriteLastIFDOffset(in); saver.overwriteComment(in, xml); } catch (FormatException exc) { IOException io = new IOException("Unable to append OME-XML comment"); io.initCause(exc); throw io; } finally { if (out != null) out.close(); if (in != null) in.close(); } }
private void saveComment(String file, String xml) throws IOException { if (out != null) out.close(); out = new RandomAccessOutputStream(file); RandomAccessInputStream in = null; try { TiffSaver saver = new TiffSaver(out, file); saver.setBigTiff(isBigTiff); in = new RandomAccessInputStream(file); saver.overwriteLastIFDOffset(in); saver.overwriteComment(in, xml); } catch (FormatException exc) { IOException io = new IOException("Unable to append OME-XML comment"); io.initCause(exc); throw io; } finally { if (out != null) out.close(); if (in != null) in.close(); } }
@Test(expectedExceptions={ IllegalArgumentException.class }) public void testNullBytes() throws IOException { RandomAccessOutputStream a = new RandomAccessOutputStream(new ByteArrayHandle()); ByteArrayHandle b = null; tiffSaver = new TiffSaver(a, b); tiffSaver.writeHeader(); }
RandomAccessOutputStream out = new RandomAccessOutputStream(handle); out.order(isLittleEndian());
@Test(expectedExceptions={ IllegalArgumentException.class }) public void testNullFilename() throws IOException { RandomAccessOutputStream a = new RandomAccessOutputStream(new ByteArrayHandle()); String b = null; tiffSaver = new TiffSaver(a, b); tiffSaver.writeHeader(); }
@BeforeMethod public void setUp() throws IOException { ByteArrayHandle handle = new ByteArrayHandle(INITIAL_CAPACITY); out = new RandomAccessOutputStream(handle); in = new RandomAccessInputStream(handle); tiffSaver = new TiffSaver(out, handle); tiffParser = new TiffParser(in); ifd = new IFD(); ifd.putIFDValue(IFD.IMAGE_WIDTH, 512); ifd.putIFDValue(IFD.IMAGE_DESCRIPTION, "comment"); }
private byte[] readSavedPlane() throws FormatException, IOException { ByteArrayHandle savedData = new ByteArrayHandle(); byte[] plane = null; try (RandomAccessOutputStream out = new RandomAccessOutputStream(savedData); RandomAccessInputStream in = new RandomAccessInputStream(savedData)) { TiffSaver saver = new TiffSaver(out, savedData); //saver.setInputStream(in); TiffParser parser = new TiffParser(in); saver.writeImage(data, ifd, 0, FormatTools.UINT16, false); plane = new byte[data.length]; parser.getSamples(ifd, plane); } return plane; }
public BaseTiffMock() throws FormatException, IOException { handle = new ByteArrayHandle(); handle.setOrder(ByteOrder.LITTLE_ENDIAN); out = new RandomAccessOutputStream(handle); tiffSaver = new TiffSaver(out, handle); tiffSaver.writeHeader(); IFD ifd = new IFD(); ifd.put(IFD.IMAGE_WIDTH, getImageWidth()); ifd.put(IFD.IMAGE_LENGTH, getImageLength()); ifd.put(IFD.BITS_PER_SAMPLE, getBitsPerSample()); ifd.put(IFD.COMPRESSION, getCompression()); ifd.put(IFD.PHOTOMETRIC_INTERPRETATION, PhotoInterp.RGB.getCode()); ifd.put(IFD.STRIP_OFFSETS, getStripOffsets()); ifd.put(IFD.SAMPLES_PER_PIXEL, getSamplesPerPixel()); ifd.put(IFD.ROWS_PER_STRIP, getRowsPerStrip()); ifd.put(IFD.X_RESOLUTION, getXResolution()); ifd.put(IFD.Y_RESOLUTION, getYResolution()); ifd.put(IFD.RESOLUTION_UNIT, getResolutionUnit()); tiffSaver.writeIFD(ifd, 0); in = new RandomAccessInputStream(handle); tiffParser = new TiffParser(in); }