| IOFormat 1.8.0

Loading...
Searching...
No Matches
API Changelog

All API modifications will be documented in this file.

# IOF 1.7 - 2027-06-20

## IOF-609: Add possibility to store stacks as a list of files

Added 2 methods `StackWriter::writeFromPattern`:

- one to write ImageViews into a list of image files.
- another to write MultiImageView content into a list of image files

## IOF-589: support of tiling for TIFF writer

Added 2 options to TIFF writer: `tileSize` to define the tile size to apply, and `forceStrips` to force the writing of strips.

# IOF 1.5 - 2024-01-15

## IOF-560: Upgrade ioformat configuration file for plugin selection

`ioformat_config.yml` can now contain a `libraries` section which allows selecting libraries to load as plugins.

# IOF 1.1 - 2023-02-08

## IOF-447: IOFormat config file made optional and renamed

Config file is now optional. If not present, IOFormat behavior is the same than if file is empty. Config file (old 'config.yml') is renamed into "ioformat_config.yml"

# IOF 1.0 - 2022-11-29

## IOF-396: improve configuration file mechanism

Configuration file must now be called `config.yml` and be located in plugins folder. This file should contain a list of plugins which must be tried in a specific order when opening a file format. See user guide `plugin system` chapter for more details.

# IOF 0.33 - 2022-04-29

## IOF-352: apply API review changes

several API changes:

- `getView` becomes `openView`
- `loadImage` becomes `readImage`
- `save` becomes `writeView`
- `openPattern` becomes `openImageFromPattern`
- `loadPattern` becomes `readImageFromPattern`
- `openListFile` becomes `openImageFromListFile`
- `loadListFile` becomes `readImageFromListFile`

# IOF 0.32 - 2022-04-15

## IOF-326: add a new getView variant to force a format when opening a file

Adding `ioformat::getView(const std::string& path, const std::string& format)` to make user able to force a format when opening a file.

# IOF 0.30 - 2021-12-30

## IOF-285: migrate factories to global space

All method from `IOFormat` class moved to `ioformat` namespace. To call these factories you previously needed to write `ioformat::IOFormat::getView` for example, now you can write `ioformat::getView`.

In Python, the factories are at the module level: `ioformat.IOFormat.get_view` now becoming `ioformat.get_view` for example.

In .NET, a class to contain the functions is required, and is now named `ViewIO`. So you have to write `IOFormat.ViewIO.GetView` where you wrote `IOFormat.IOformat.GetView`.

# IOF 0.29 - 2021-11-23

## IOF-281: new factories to handle list files

New methods in `StackReader` factory:

- `openListFile` that stack the files listed inside a given list file.
- `loadListFile` that do the same, and load the result in memory.

# IOF 0.28 - 2021-10-14

## IOF-280: new API to load a stack of file following a pattern

New factory class `StackReader` with the following methods:

- `std::shared_ptr<ImageView> openPattern(const std::string& pattern, ImageDimension newDim)`
- `std::shared_ptr<ImageView> openPattern(const std::string& pattern)`
- `std::shared_ptr<MemoryImageView> loadPattern(const std::string& pattern, ImageDimension newDim)`
- `std::shared_ptr<MemoryImageView> loadPattern(const std::string& pattern)`

## IOF-296 Add multiThreadStrategy option to TiffWriter to explicitly control which strategy to use.

- New "multiThreadStrategy" option added to TiffWriter

# IOF 0.27 - 2021-09-16

## IOF-263: new method to force IOFormat initialization

New method `IOFormat::init()` added

# IOF 0.25 - 2021-07-01

## IOF-250: versioning utilities

New `Versioning` class to handle version services, such as getting the version info, the version string or checking the library compatibility.

Two new constants defined in the header, in order to support these versioning utilities: `IOFORMAT_VERSION` and `IOFORMAT_VERSION_STRING`.

# IOF 0.24 - 2021-06-04

## Make exporting methods more generic

Many methods in IOFormat required `WriteStreamAccess` as an input, so they were replaced with the more generic interface `DataAccess`.

Changed methods:

- `IOFormat::save`
- `IOFormat::openWriter`

# IOF 0.22 - 2021-04-02

## IOF-240: Make writer accept more input view types

Writers are now able to take all possible view types as input as long as there is no user decision or data loss in the process.

- JpegWriter can now handle planar Image (2D + CHANNEL dimension)
- MRC writer can now handle MultiImageView (with frames of same shape and supported type)
- PNG writer can handle 3D Image but only if planar (2D + CHANNEL dimension)
- RAW writer can now handle MultiImageView (with frames of same shape and type)
- TIFF writer can now handle MultiImageView (each frame is recorded in the same file) and 3D images (last dimension is unstacked, and each slice is recorded in the same file)

## IOF-233: Optimization of Tiff reader

Tiff reader can now return an ImageView (one frame) or a MultiImageView (multi-frame). In the case "multi-frame", only the first frame of the file will be read until `frameCount` method is called. So as to not systematically read the whole file (Improvement for HTTP access)

- PNG writer can handle 3D Image but only if planar ((2D + CHANNEL dimension)
- RAW writer can now handle MultiImageView (with frames of same shape and type)
- TIFF writer can now handle MultiImageView (each frame is recorded in the same file) and 3D images (last dimension is unstacked, and each slice is recorded in the same file)

# IOF 0.21 - 2021-03-04

## IOF-206: update IOFormat code and API according to new IOLink Storage API

IOFormat now uses a new version of IOPLugin, so the custom plugin must be adapted accordingly.

Little API changes:

- `IOFormat::getView`: first argument from `Storage` to `DataAccess`
- `IOFormat::openWriter`: second argument from `OStreamStorage` to `WriteStreamAccess` in both version of the function.
- `IOFormat::save`: second argument from `OStreamStorage` to `WriteStreamAccess`

## IOF-219: remove OSX playform

OSX platform is not supported from now on.

# IOF 0.20 - 2021-02-09

## IOF-198: updated to IOPlugin 0.5.0, so plugins follow the new API

Big rework of the existing plugins to fit the new IOPlugin API, that enable new features. There should not be big changes with the use of IOFormat itself, but plugins implemented with the previous IOPlugin API will not function properly with IOFormat.

# IOF 0.18 - 2020-12-10

IOF-181: Python naming conventions: method names are now lowercase, with words separated by underscores. Example: IOFormat.getView() is renamed into IOFormat.get_view().

# IOF 0.17 - 2020-11-17

No changes

# IOF 0.16 - 2020-10-15

## IOF-164: Clarify logger use

- IOPlugin library is not public anymore to clarify IOFormat logger use

## IOF-121: PNG writer accept planar images

- `void saveImage(std::shared_ptr<iolink::ReadImageView> view, const std::string& pathFile)` is renamed `save` and takes a `View` as first argument
- `void saveImage(std::shared_ptr<iolink::View> view, std::shared_ptr<iolink::OStreamStorage> dst, const std::string& format)` is renamed `save` and takes a `View` as first argument

Following methods take a View as first argument instead of a ReadImageView:

- `static std::shared_ptr<iolink::Writer> openWriter(std::shared_ptr<iolink::View> view, const std::string& pathFile)`
- `static std::shared_ptr<iolink::Writer> openWriter(std::shared_ptr<iolink::View> view, std::shared_ptr<iolink::OStreamStorage> dst, const std::string& format)`
- `static std::shared_ptr<iolink::Writer> openWriter(std::shared_ptr<iolink::View> view, std::shared_ptr<iolink::OStreamStorage> dst, const std::string& format, const std::string& plugin)`

# IOF 0.15 - 2020-09-17

No changes

# IOF 0.14 - 2020-08-20

## IOF-157: Removed Raw Writer factory

## IOF-147: Helper for conversion from extension to format

- Added `std::string formatFromExtension(const std::string& extension)` method into IOFormat api

# IOF 0.13 - 2020-07-23

## IOF-139: Writer factories are removed

- Removed MrcWriterFactory
- Removed JpegWriterFactory
- Removed PngWriterFactory

## IOF-135: rework logging system to match IOLink's one

- Remove `void IOFormat::setLogLevel`
- Remove `void IOFormat::setFlushLevel`
- Add `void Logger::init(LogeLevel level)`
- Add `LogLevel Logger::logLevel()`

## IOL-141: new APIs to create writers

- Added `static std::shared_ptr<iolink::Writer> openWriter(std::shared_ptr<iolink::ReadImageView> image, const std::string& pathFile);` to open a writer used to write an image view into a file.
- Added `static std::shared_ptr<iolink::Writer> openWriter(std::shared_ptr<iolink::ReadImageView> image, std::shared_ptr<iolink::OStreamStorage> dst, const std::string& format);` to open a writer used to write an image view into an output stream.
- Added `static std::shared_ptr<iolink::Writer> openWriter(std::shared_ptr<iolink::ReadImageView> image, std::shared_ptr<iolink::OStreamStorage> dst, const std::string& format, const std::string& plugin);` to open a writer used to write an image view into an output stream

# IOF 0.12 - 2020-06-25

No change

# IOF 0.11 - 2020-05-28

No change