/* * #%L * OME Bio-Formats package for reading and converting biological file formats. * %% * Copyright (C) 2005 - 2017 Open Microscopy Environment: * - Board of Regents of the University of Wisconsin-Madison * - Glencoe Software, Inc. * - University of Dundee * %% * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as * published by the Free Software Foundation, either version 2 of the * License, or (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public * License along with this program. If not, see * . * #L% */ import java.io.IOException; import loci.common.services.DependencyException; import loci.common.services.ServiceException; import loci.common.services.ServiceFactory; import loci.formats.FormatException; import loci.formats.FormatTools; import loci.formats.ImageReader; import loci.formats.ImageWriter; import loci.formats.meta.IMetadata; import loci.formats.services.OMEXMLService; /** * Example class for converting a file from one format to another, using * Bio-Formats version 4.2 or later. * * @author Melissa Linkert melissa at glencoesoftware.com */ public class FileConvert { /** The file format reader. */ private ImageReader reader; /** The file format writer. */ private ImageWriter writer; /** The file to be read. */ private String inputFile; /** The file to be written. */ private String outputFile; /** * Construct a new FileConvert to convert the specified input file. * * @param inputFile the file to be read * @param outputFile the file to be written */ public FileConvert(String inputFile, String outputFile) { this.inputFile = inputFile; this.outputFile = outputFile; } /** Do the actual work of converting the input file to the output file. */ public void convert() { // initialize the files boolean initializationSuccess = initialize(); // if we could not initialize one of the files, // then it does not make sense to convert the planes if (initializationSuccess) { convertPlanes(); } // close the files cleanup(); } /** * Set up the file reader and writer, ensuring that the input file is * associated with the reader and the output file is associated with the * writer. * * @return true if the reader and writer were successfully set up, or false * if an error occurred */ private boolean initialize() { Exception exception = null; try { // construct the object that stores OME-XML metadata ServiceFactory factory = new ServiceFactory(); OMEXMLService service = factory.getInstance(OMEXMLService.class); IMetadata omexml = service.createOMEXMLMetadata(); // set up the reader and associate it with the input file reader = new ImageReader(); reader.setMetadataStore(omexml); reader.setId(inputFile); // set up the writer and associate it with the output file writer = new ImageWriter(); writer.setMetadataRetrieve(omexml); writer.setInterleaved(reader.isInterleaved()); writer.setId(outputFile); } catch (FormatException e) { exception = e; } catch (IOException e) { exception = e; } catch (DependencyException e) { exception = e; } catch (ServiceException e) { exception = e; } if (exception != null) { System.err.println("Failed to initialize files."); exception.printStackTrace(); } return exception == null; } /** Save every plane in the input file to the output file. */ private void convertPlanes() { for (int series=0; series