IOLink IOL_v1.8.0_release
|
IOLink capabilities, in summary.
IOLink provides some elementary containers: Vector
, VectorX
, ArrayX
, and VariantDataValue
.
And also some basic types to handle data: Region
, RegionX
, DataType
, and Uri
.
IOLink is able to handle all kinds of image data: 2D, volumetric, multispectral, video, etc.
IOLink provides an interface for multi-resolution images.
IOLink is able to store 2-dimensional tables of rows and columns, like a spreadsheet.
Data don't need to be fully loaded in memory and can be accessed region by region from a file, in local or remote.
User code is significantly reduced when upgrading to IOLink. Readability is a core focus.
Users don't need to do specific conversion to read data, wherever data comes from and how it is encoded.
IOLink mechanisms should prevent users to do invalid operations. High-level methods are provided to support users in their data manipulation.
Initially, IOLink was designed for multithreaded environments. However, thread safety mechanisms are not active by default to avoid performances issues with some customer uses.
In the same major version of IOLink, binary compatibility is ensured to avoid symbol conflicts in a same application, and enable object sharing between different versions.
Nevertheless, there are some possible issues with different versions of IOLink loaded by different components of a same application. See the DLL issue chapter.
IOLink images are interoperable with NumPy arrays (>= v1.17.4) for Python users, without memory duplication.
IOLink streams are interoperable with MemoryStreams
instances (.NET) and RawIOBase
interface (Python)
Internal mechanisms are optimized to get high performance accesses.