Skip to main content
Version: 3.4

Class f3d::image

Definition: image.h (line 22)

Class used to represent an image.

A class to represent an image, which can be created from a file, a buffer and provided by a window. It provides tools to save and compare images.

Inner classes​

Members​

Constructors​

Function image​

f3d::image::image()

Default/copy/move constructors/operators.

Return type:

Function ~image​

f3d::image::~image()

Default/copy/move constructors/operators.

Return type:

Function image​

f3d::image::image(const image &img)

Default/copy/move constructors/operators.

Parameters:

  • const image & img

Return type:

Function operator=​

image & f3d::image::operator=(const image &img) noexcept

Default/copy/move constructors/operators.

Parameters:

Return type: image &

Function image​

f3d::image::image(image &&img) noexcept

Default/copy/move constructors/operators.

Parameters:

  • image && img

Return type:

Function operator=​

image & f3d::image::operator=(image &&img) noexcept

Default/copy/move constructors/operators.

Parameters:

Return type: image &

Operators​

Function operator==​

bool f3d::image::operator==(const image &reference) const

Comparison operators, uses image::compare with a threshold of 1e-14.

Parameters:

  • const image & reference

Return type: bool

Function operator!=​

bool f3d::image::operator!=(const image &reference) const

Comparison operators, uses image::compare with a threshold of 1e-14.

Parameters:

  • const image & reference

Return type: bool

Resolution​

Function getWidth​

unsigned int f3d::image::getWidth() const

Set/Get image resolution.

Return type: unsigned int

Function getHeight​

unsigned int f3d::image::getHeight() const

Set/Get image resolution.

Return type: unsigned int

Channel Count​

Function getChannelCount​

unsigned int f3d::image::getChannelCount() const

Set/Get image channel count.

Return type: unsigned int

Buffer Data​

Function setContent​

image & f3d::image::setContent(void *buffer)

Set/Get image buffer data. Its size is expected to be width * height * channelCount * typeSize.

Parameters:

  • void * buffer

Return type: image &

Function getContent​

void * f3d::image::getContent() const

Set/Get image buffer data. Its size is expected to be width * height * channelCount * typeSize.

Return type: void *

Public types​

Enumeration type SaveFormat​

Definition: image.h (line 28)

enum SaveFormat {
PNG,
JPG,
TIF,
BMP
}

Enumeration of supported export formats

Enumerator PNG​

Enumerator JPG​

Enumerator TIF​

Enumerator BMP​

Enumeration type ChannelType​

Definition: image.h (line 42)

enum ChannelType {
BYTE,
SHORT,
FLOAT
}

Enumeration of supported channel types

  • BYTE: 8-bit integer in range [0,255]

  • SHORT: 16-bit integer in range [0,65535]

  • FLOAT: 32-bit floating point in range [-inf,+inf]

Enumerator BYTE​

Enumerator SHORT​

Enumerator FLOAT​

Private attributes​

Variable Internals​

Definition: image.h (line 245)

internals* f3d::image::Internals

Type: internals *

Public functions​

Function image​

f3d::image::image(const std::filesystem::path &filePath)

Read provided file path (used as is) into a new image instance, the following formats are supported: PNG, PNM, TIFF, BMP, HDR, JPEG, GESigna, MetaImage, TGA. EXR files are also supported if the associated module is built. The complete list can be retrieved at runtime by calling getSupportedFormats().

Throws an image::read_exception in case of failure.

Parameters:

  • const std::filesystem::path & filePath

Return type:

Function image​

f3d::image::image(unsigned int width, unsigned int height, unsigned int channelCount, ChannelType type=ChannelType::BYTE)

Create an image from a given width, height, and channel count. A channel type can also be given. Default is BYTE.

Parameters:

  • unsigned int width
  • unsigned int height
  • unsigned int channelCount
  • ChannelType type = ChannelType::BYTE

Return type:

Function getNormalizedPixel​

std::vector< double > f3d::image::getNormalizedPixel(const std::pair< int, int > &xy) const

Read one specific pixel and return all channel normalized values. If the channel type is BYTE or SHORT, the values are normalized to [0, 1] range.

Because of the normalization, this function can be slow, prefer getContent() when reading several pixels and normalization is not needed.

Parameters:

  • const std::pair< int, int > & xy

Return type: std::vector< double >

Function getChannelType​

ChannelType f3d::image::getChannelType() const

Get image channel type. Throws an image::read_exception if the type is unknown.

Return type: ChannelType

Function getChannelTypeSize​

unsigned int f3d::image::getChannelTypeSize() const

Get image channel type size in bytes.

Return type: unsigned int

Function compare​

double f3d::image::compare(const image &reference) const

Compare current image to a reference. The error is minimum between Minkownski and Wasserstein distance on a SSIM computation, as specified in VTK. Please note, due to possible arithmetic imprecision in the SSIM computation a non-zero value can be returned with identical images. Depending on the VTK version, another comparison algorithm may be used. Error value meaning is described below:

  • 1e-14: Pixel perfect comparison.

  • 0.04: Visually indistinguishable.

  • 0.1: Small visible difference.

  • 0.5: Comparable images.

  • 1.0: Different type, size or number of components

Parameters:

  • const image & reference

Return type: double

Function save​

const image & f3d::image::save(const std::filesystem::path &filePath, SaveFormat format=SaveFormat::PNG) const

Save an image to the provided file path, used as is, in the specified format. Default format is PNG if not specified.

  • PNG: Supports channel type BYTE and SHORT with channel count of 1 to 4

  • JPG: Supports channel type BYTE with channel count of 1 or 3

  • TIF: Supports channel type BYTE, SHORT and FLOAT with channel count of 1 to 4

  • BMP: Supports channel type BYTE with channel count of 1 to 4

Throws an image::write_exception if the format is incompatible with with image channel type or channel count or if the image cannot be written for any other reason.

Parameters:

  • const std::filesystem::path & filePath
  • SaveFormat format = SaveFormat::PNG

Return type: const image &

Function saveBuffer​

std::vector< unsigned char > f3d::image::saveBuffer(SaveFormat format=SaveFormat::PNG) const

Save an image to a memory buffer in the specified format and returns it. Default format is PNG if not specified.

  • PNG: Supports channel type BYTE and SHORT with channel count of 1 to 4

  • JPG: Supports channel type BYTE with channel count of 1 or 3

  • BMP: Supports channel type BYTE with channel count of 1 to 4

  • TIF format is not supported yet.

Throws an image::write_exception if the type is TIF or if the format is incompatible with with image channel type or channel count.

Parameters:

Return type: std::vector< unsigned char >

Function toTerminalText​

const image & f3d::image::toTerminalText(std::ostream &stream) const

Convert to colored text using ANSI escape sequences for printing in a terminal. Block and half-block characters are used to represent two pixels per character (vertically) meaning that each text line represent two rows of pixels. Byte encoded RGB and RGBA images are supported (alpha channel values are binarized). Assumes terminal support for:

  • unicode block characters (U+2580, U+2584, U+2588)

  • SGR escape codes (ESC[0m, ESC[49m)

  • 24-bit escape codes (ESC[38;2;{r};{g};{b}m, ESC[48;2;{r};{g};{b}m)

Throws a image::write_exception if the type is not byte RGB or RGBA.

Parameters:

  • std::ostream & stream

Return type: const image &

Function toTerminalText​

std::string f3d::image::toTerminalText() const

Convert to colored text using ANSI escape sequences for printing in a terminal. See toTerminalText(std::ostream& stream).

Throws a image::write_exception if the type is not byte RGB or RGBA.

Return type: std::string

Function setMetadata​

f3d::image & f3d::image::setMetadata(std::string key, std::string value)

Set the value for a metadata key. Setting an empty value ("") removes the key.

Parameters:

  • std::string key
  • std::string value

Return type: f3d::image &

Function getMetadata​

std::string f3d::image::getMetadata(const std::string &key) const

Get the value for a metadata key. Throws a image::read_exception if key does not exist.

Parameters:

  • const std::string & key

Return type: std::string

Function allMetadata​

std::vector< std::string > f3d::image::allMetadata() const

List all the metadata keys which have a value set.

Return type: std::vector< std::string >

Public static functions​

Function getSupportedFormats​

static std::vector< std::string > f3d::image::getSupportedFormats()

Get the list of supported image format extensions when opening a file.

Return type: std::vector< std::string >