Name | Synopsis | Description | Parameters | Return Values | Attributes | See Also
cc [ flag... ] file... -lmlib [ library... ] #include <mlib.h> mlib_status mlib_ImageDataTypeConvert(mlib_image *dst, const mlib_image *src);
The mlib_ImageDataTypeConvert() function converts between data types MLIB_BIT, MLIB_BYTE, MLIB_SHORT, MLIB_USHORT, MLIB_INT, MLIB_FLOAT, and MLIB_DOUBLE.
The input and output data images must have the same width, height, and number of channels. Conversion to a smaller pixel format clamps the source value to the dynamic range of the destination pixel.
See the following table for available variations of the data type conversion function.
Source Type |
Dest. Type |
Action |
---|---|---|
MLIB_BYTE |
MLIB_BIT |
(x > 0) ? 1 : 0 |
MLIB_SHORT |
MLIB_BIT |
(x > 0) ? 1 : 0 |
MLIB_USHORT |
MLIB_BIT |
(x > 0) ? 1 : 0 |
MLIB_INT |
MLIB_BIT |
(x > 0) ? 1 : 0 |
MLIB_FLOAT |
MLIB_BIT |
(x > 0) ? 1 : 0 |
MLIB_DOUBLE |
MLIB_BIT |
(x > 0) ? 1 : 0 |
MLIB_BIT |
MLIB_BYTE |
(x == 1) ? 1 : 0 |
MLIB_SHORT |
MLIB_BYTE |
(mlib_u8)clamp(x, 0, 255) |
MLIB_USHORT |
MLIB_BYTE |
(mlib_u8)clamp(x, 0, 255) |
MLIB_INT |
MLIB_BYTE |
(mlib_u8)clamp(x, 0, 255) |
MLIB_FLOAT |
MLIB_BYTE |
(mlib_u8)clamp(x, 0, 255) |
MLIB_DOUBLE |
MLIB_BYTE |
(mlib_u8)clamp(x, 0, 255) |
MLIB_BIT |
MLIB_SHORT |
(x == 1) ? 1 : 0 |
MLIB_BYTE |
MLIB_SHORT |
(mlib_s16)x |
MLIB_USHORT |
MLIB_SHORT |
(mlib_s16)clamp(x, -32768, 32767) |
MLIB_INT |
MLIB_SHORT |
(mlib_s16)clamp(x, -32768, 32767) |
MLIB_FLOAT |
MLIB_SHORT |
(mlib_s16)clamp(x, -32768, 32767) |
MLIB_DOUBLE |
MLIB_SHORT |
(mlib_s16)clamp(x, -32768, 32767) |
MLIB_BIT |
MLIB_USHORT |
(x == 1) ? 1 : 0 |
MLIB_BYTE |
MLIB_USHORT |
(mlib_u16)x |
MLIB_SHORT |
MLIB_USHORT |
(mlib_u16)clamp(x, 0, 65535) |
MLIB_INT |
MLIB_USHORT |
(mlib_u16)clamp(x, 0, 65535) |
MLIB_FLOAT |
MLIB_USHORT |
(mlib_u16)clamp(x, 0, 65535) |
MLIB_DOUBLE |
MLIB_USHORT |
(mlib_u16)clamp(x, 0, 65535) |
MLIB_BIT |
MLIB_INT |
(x == 1) ? 1 : 0 |
MLIB_BYTE |
MLIB_INT |
(mlib_s32)x |
MLIB_SHORT |
MLIB_INT |
(mlib_s32)x |
MLIB_USHORT |
MLIB_INT |
(mlib_s32)x |
MLIB_FLOAT |
MLIB_INT |
(mlib_s32)clamp(x, -2147483647-1, 2147483647) |
MLIB_DOUBLE |
MLIB_INT |
(mlib_s32)clamp(x, -2147483647-1, 2147483647) |
MLIB_BIT |
MLIB_FLOAT |
(x == 1) ? 1.0 : 0.0 |
MLIB_BYTE |
MLIB_FLOAT |
(mlib_f32)x |
MLIB_SHORT |
MLIB_FLOAT |
(mlib_f32)x |
MLIB_USHORT |
MLIB_FLOAT |
(mlib_f32)x |
MLIB_INT |
MLIB_FLOAT |
(mlib_f32)x |
MLIB_DOUBLE |
MLIB_FLOAT |
(mlib_f32)x |
MLIB_BIT |
MLIB_DOUBLE |
(x == 1) ? 1.0 : 0.0 |
MLIB_BYTE |
MLIB_DOUBLE |
(mlib_d64)x |
MLIB_SHORT |
MLIB_DOUBLE |
(mlib_d64)x |
MLIB_USHORT |
MLIB_DOUBLE |
(mlib_d64)x |
MLIB_INT |
MLIB_DOUBLE |
(mlib_d64)x |
MLIB_FLOAT |
MLIB_DOUBLE |
(mlib_d64)x |
The actions are defined in C-style pseudo-code. All type casts follow the rules of standard C. clamp() can be defined as a macro: #define clamp(x, low, high) (((x) < (low)) ? (low) : (((x) > (high)) ? (high) : (x)))
The function takes the following arguments:
Pointer to destination image.
Pointer to source image.
The function returns MLIB_SUCCESS if successful. Otherwise it returns MLIB_FAILURE.
See attributes(5) for descriptions of the following attributes:
ATTRIBUTE TYPE |
ATTRIBUTE VALUE |
---|---|
Interface Stability |
Committed |
MT-Level |
MT-Safe |
Name | Synopsis | Description | Parameters | Return Values | Attributes | See Also