IOFormat  IOF_v0.33.0_release
Functionalities

IOFormat functionalities, for now, and for the future.

Now

What is available in IOFormat for now...

Access to data

As far, IOFormat only allows to load images (or set of Images).

Supported formats

IOFormat contains a base of plugins to handle the most current formats.

Reading

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.

Writing

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

Customer is free to implement its own extractor/writer to handle any other format. See Plugin System chapter for more details.

If you look for more informations about IOFormat plugins, you should consult Plugins chapter.

Thread safety

Not threadsafe yet

Environments

IOFormat is available for following compilers:

  • Visual Studio 2015
  • Visual Studio 2017
  • RHEL 7 (gcc 4.8)
  • RHEL 8 (gcc 8)
  • Ubuntu 18.04 (gcc 7)
  • Ubuntu 20.04 (gcc 9)

Wrappable

IOFormat is wrapped for:

  • .NET Standard 2.0
  • python

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 7 gcc 4.8 X 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:

  • Any call to IOLink API must be done before using IOFormat (e.g. initialize IOLink log level). Internal issue which occurs when IOLink library is not found by IOFormat library (not located in same folder)
  • in command line, (not from Visual tool) with plugins using dynamically-linked thirdparty libraries. Path must be manually set to indicate the location of thirdparty libraries.

Future

What should be available in IOFormat soon...

Access to data

IOFormat could be able to load sounds, meshes, measures, pdf, ...

Thread safety

IOLink could be used in multi-threaded environments.

Wrappable

Wrapping for JAVA is considered but not planned yet.