/** Extracts the OME-XML from the current {@link #metadataFile}. */ private String readMetadataFile() throws IOException { if (checkSuffix(metadataFile, "ome.tiff") || checkSuffix(metadataFile, "ome.tif") || checkSuffix(metadataFile, "ome.tf2") || checkSuffix(metadataFile, "ome.tf8") || checkSuffix(metadataFile, "ome.btf")) { // metadata file is an OME-TIFF file; extract OME-XML comment try (RandomAccessInputStream in = new RandomAccessInputStream(metadataFile)) { TiffParser parser = new TiffParser(in); return parser.getComment(); } } // assume metadata file is an XML file return DataTools.readFile(metadataFile); }
@Override public int getOptimalTileWidth() { FormatTools.assertId(currentId, true, 1); return ((OMETiffCoreMetadata) getCurrentCore()).tileWidth; }
/** * Get a MetadataStore suitable for display. * * Note: Historically, this method removed certain elements * for display purposes and was not be suitable for use with * FormatWriter due to not containing required BinData * BigEndian attributes. This is no longer the case; the general * {@link SubResolutionFormatReader#getMetadataStore()} method will always create * valid metadata which is suitable for both display and use * with FormatWriter, and so should be used instead. * * @return the metadata store. * @deprecated Use the general {@link SubResolutionFormatReader#getMetadataStore()} method. */ public MetadataStore getMetadataStoreForDisplay() { return getMetadataStore(); }
OMETiffReader reader = new OMETiffReader(); reader.setId(companion); assertEquals(reader.getSizeX(), WriterUtilities.SIZE_X); assertEquals(reader.getSizeY(), WriterUtilities.SIZE_Y); assertEquals(reader.getSizeZ(), WriterUtilities.SIZE_Z); assertEquals(reader.getSizeC(), WriterUtilities.SIZE_C); assertEquals(reader.getSizeT(), WriterUtilities.SIZE_T); reader.close(); outFile.deleteOnExit(); cFile.deleteOnExit();
super.initFile(normalizeFilename(null, id)); id = currentId; String dir = new File(id).getParent(); if (checkSuffix(fileName, "companion.ome")) { xml = DataTools.readFile(fileName); companion = true; firstIFD = getFirstIFD(fileName); xml = firstIFD.getComment(); if (service == null) setupService(); try { if (meta == null || !metaFile.equals(currentId)) { firstIFD = getFirstIFD(new Location(dir, firstTIFF).getAbsolutePath()); metadataFile = fileName; if (path.exists()) { metadataFile = path.getAbsolutePath(); xml = readMetadataFile(); if (!isGroupFiles() && !isSingleFile(currentId)) { IFormatReader reader = new MinimalTiffReader(); reader.setId(currentId); addSubResolutions(); else filename = normalizeFilename(dir, filename);
@Override public boolean isThisType(String name, boolean open) { if (checkSuffix(name, "companion.ome")) { // force the reader to pick up binary-only companion files return true; } metaFile = new Location(name).getAbsolutePath(); boolean valid = super.isThisType(name, open); if (metadataFile != null) { // this is a binary-only file // overwrite XML with what is in the companion OME-XML file String dir = new File(metaFile).getParent(); Location path = new Location(dir, metadataFile); LOGGER.debug("Checking metadata file {}", path); if (!path.exists()) return false; metadataFile = path.getAbsolutePath(); try { String xml = readMetadataFile(); service.createOMEXMLMetadata(xml); } catch (ServiceException se) { LOGGER.debug("OME-XML parsing failed", se); return false; } catch (IOException | NullPointerException e) { return false; } } return valid; }
@Override public boolean isSingleFile(String id) throws FormatException, IOException { if (checkSuffix(id, "companion.ome")) { return false; if (service == null) setupService(); OMEXMLMetadata meta; try {
super.initFile(normalizeFilename(null, id)); id = currentId; String dir = new File(id).getParent(); if (checkSuffix(fileName, "companion.ome")) { xml = DataTools.readFile(fileName); companion = true; firstIFD = getFirstIFD(fileName); xml = firstIFD.getComment(); if (service == null) setupService(); try { if (meta == null || !metaFile.equals(currentId)) { firstIFD = getFirstIFD(new Location(dir, firstTIFF).getAbsolutePath()); metadataFile = fileName; if (path.exists()) { metadataFile = path.getAbsolutePath(); xml = readMetadataFile(); if (!isGroupFiles() && !isSingleFile(currentId)) { IFormatReader reader = new MinimalTiffReader(); reader.setId(currentId); addSubResolutions(); else filename = normalizeFilename(dir, filename);
@Override public boolean isThisType(String name, boolean open) { if (checkSuffix(name, "companion.ome")) { // force the reader to pick up binary-only companion files return true; } metaFile = new Location(name).getAbsolutePath(); boolean valid = super.isThisType(name, open); if (metadataFile != null) { // this is a binary-only file // overwrite XML with what is in the companion OME-XML file String dir = new File(metaFile).getParent(); Location path = new Location(dir, metadataFile); LOGGER.debug("Checking metadata file {}", path); if (!path.exists()) return false; metadataFile = path.getAbsolutePath(); try { String xml = readMetadataFile(); service.createOMEXMLMetadata(xml); } catch (ServiceException se) { LOGGER.debug("OME-XML parsing failed", se); return false; } catch (IOException | NullPointerException e) { return false; } } return valid; }
@Override public boolean isSingleFile(String id) throws FormatException, IOException { if (checkSuffix(id, "companion.ome")) { return false; if (service == null) setupService(); OMEXMLMetadata meta; try {
@Override public int getOptimalTileWidth() { FormatTools.assertId(currentId, true, 1); return ((OMETiffCoreMetadata) getCurrentCore()).tileWidth; }
/** * Get a MetadataStore suitable for writing. * * Note: Historically, this method created metadata suitable * for use with FormatWriter, but would possibly not generate * valid OME-XML if both BinData and TiffData elements were * present. This is no longer the case; the general * {@link SubResolutionFormatReader#getMetadataStore()} method will always create * valid metadata which is suitable for use with FormatWriter, * and so should be used instead. * * @return the metadata store. * @deprecated Use the general {@link SubResolutionFormatReader#getMetadataStore()} method. */ public MetadataStore getMetadataStoreForConversion() { return getMetadataStore(); }
/** Extracts the OME-XML from the current {@link #metadataFile}. */ private String readMetadataFile() throws IOException { if (checkSuffix(metadataFile, "ome.tiff") || checkSuffix(metadataFile, "ome.tif") || checkSuffix(metadataFile, "ome.tf2") || checkSuffix(metadataFile, "ome.tf8") || checkSuffix(metadataFile, "ome.btf")) { // metadata file is an OME-TIFF file; extract OME-XML comment try (RandomAccessInputStream in = new RandomAccessInputStream(metadataFile)) { TiffParser parser = new TiffParser(in); return parser.getComment(); } } // assume metadata file is an XML file return DataTools.readFile(metadataFile); }
@Override public int getOptimalTileHeight() { FormatTools.assertId(currentId, true, 1); return ((OMETiffCoreMetadata) getCurrentCore()).tileHeight; }
/** * Get a MetadataStore suitable for display. * * Note: Historically, this method removed certain elements * for display purposes and was not be suitable for use with * FormatWriter due to not containing required BinData * BigEndian attributes. This is no longer the case; the general * {@link SubResolutionFormatReader#getMetadataStore()} method will always create * valid metadata which is suitable for both display and use * with FormatWriter, and so should be used instead. * * @return the metadata store. * @deprecated Use the general {@link SubResolutionFormatReader#getMetadataStore()} method. */ public MetadataStore getMetadataStoreForDisplay() { return getMetadataStore(); }
@Override public int getOptimalTileHeight() { FormatTools.assertId(currentId, true, 1); return ((OMETiffCoreMetadata) getCurrentCore()).tileHeight; }
/** * Get a MetadataStore suitable for writing. * * Note: Historically, this method created metadata suitable * for use with FormatWriter, but would possibly not generate * valid OME-XML if both BinData and TiffData elements were * present. This is no longer the case; the general * {@link SubResolutionFormatReader#getMetadataStore()} method will always create * valid metadata which is suitable for use with FormatWriter, * and so should be used instead. * * @return the metadata store. * @deprecated Use the general {@link SubResolutionFormatReader#getMetadataStore()} method. */ public MetadataStore getMetadataStoreForConversion() { return getMetadataStore(); }