IOFormat
IOF_v0.34.0_release
|
IOFormat functionalities, for now, and for the future.
What is available in IOFormat for now...
As far, IOFormat only allows to load images (or set of Images).
IOFormat contains a base of plugins to handle the most current formats. See Plugins chapter for more details.
Customer is free to implement its own extractor/writer to handle any other format. See Plugin System chapter for more details.
Here is the list of supported formats and extensions for reading:
Format | input |
---|---|
PNG (.png) | any stream |
MRC (.mrc) | any stream |
JPEG (.jpg/.jpeg) | any stream |
JPEG2K (.jp2/.j2k/.jpc/.j2c) | any stream |
JPEG3D (.jp3d) | file path |
Tiff (.tiff/.tif) [^1] | any stream |
Dicom (.dcm) | any stream |
BMP (.bmp) | any stream |
PGX (.pgx) | file path |
PPM (.ppm) | file path |
SUN (.ras/.sun) | file path |
GATAN (.dm2/.dm3/.dm4) | file path |
RAW (.raw) | any stream |
LDM (.lda/.ldm) | any stream (with limitations)[^2] |
AmiraMesh (.am) | any stream |
[^1]: Tiff native reader may falllback to ImageAccess implementation if some feature is not supported by the native implementation.
[^2]: LDM format is not adapted for streaming because of its multifile structure. It only works if .ldm file contains an URI toward internal .dat file.
Here is the list of supported formats and extensions for writing:
Format | Output Type |
---|---|
PNG (.png) | Stream |
MRC (.mrc) | Stream |
JPEG (.jpg/.jpeg) | Stream |
RAW (.raw) | Stream |
TIFF (.tiff) | Stream |
JPEG2K (.jp2) | Stream |
LDM (.ldm) | Stream |
Natively, it is not possible to parallelize data access from a same resource. Thus user cannot read and/or write data in a same view (directly coming from IOFormat) without risking causing unpredictable and irretrievable side effects. On the other hand, according to each format, making data access threadsafe is possible, but not yet implemented in any plugin.
Nevertheless, IOLink provides a factory to make any ImageView threadsafe by protecting sensitive methods with lockers.
IOFormat is available for following compilers:
IOFormat is wrapped for:
Here is a array which gives all compatibility for handled languages:
Compilers | C++ | .NET Standard 2.0 | Python |
---|---|---|---|
MSVC 14 | X | ||
MSVC 15 | X | X[^1] | 3.6, 3.7, 3.8 |
Apple Clang 9.1 | X | ||
RHEL 8 gcc 8 | X | X | |
Ubuntu 18.04 gcc 7 | X | X | 3.6 |
Ubuntu 20.04 gcc 9 | X | X | 3.8 |
[^1]: Some limitations in .NET Core 2.1: