libimage  0.25.4
 Tout Classes Espaces de nommage Fichiers Fonctions Variables Énumérations Macros Pages
Fonctions membres publiques | Fonctions membres publiques statiques | Fonctions membres protégées | Fonctions membres privées | Attributs privés | Amis | Liste de tous les membres
Référence de la classe LibtiffImage

Manipulation d'une image TIFF. Plus de détails...

#include <LibtiffImage.h>

Graphe d'héritage de LibtiffImage:
Inheritance graph
Graphe de collaboration de LibtiffImage:
Collaboration graph

Fonctions membres publiques

int getline (uint8_t *buffer, int line)
 Retourne une ligne en entier 8 bits. Les canaux sont entrelacés. ATTENTION : si les données ne sont pas intrinsèquement codées sur des entiers 8 bits, il n'y a pas de conversion (une valeur sur 32 bits occupera 4 "cases" sur 8 bits).
int getline (uint16_t *buffer, int line)
 Retourne une ligne en entier 16 bits. Les canaux sont entrelacés. ATTENTION : si les données ne sont pas intrinsèquement codées sur des entiers 16 bits, il n'y a pas de conversion (une valeur sur 32 bits occupera 2 "cases" sur 16 bits).
int getline (float *buffer, int line)
 Retourne une ligne en flottant 32 bits. Les canaux sont entrelacés. Si les données ne sont pas intrinsèquement codées sur des flottants 32 bits, une conversion est effectuée.
int writeImage (Image *pIn)
 Ecrit une image TIFF, à partir d'une image source.
int writeImage (uint8_t *buffer)
 Ecrit une image TIFF, à partir d'un buffer d'entiers.
int writeImage (uint16_t *buffer)
 Ecrit une image TIFF, à partir d'un buffer d'entiers 16 bits.
int writeImage (float *buffer)
 Ecrit une image TIFF, à partir d'un buffer de flottants.
int writeLine (uint8_t *buffer, int line)
 Ecrit une ligne d'image TIFF, à partir d'un buffer d'entiers.
int writeLine (uint16_t *buffer, int line)
 Ecrit une ligne d'image TIFF, à partir d'un buffer d'entiers.
int writeLine (float *buffer, int line)
 Ecrit une ligne d'image TIFF, à partir d'un buffer de flottants.
 ~LibtiffImage ()
 Destructeur par défaut.
void print ()
 Sortie des informations sur l'image TIFF.
- Fonctions membres publiques inherited from FileImage
void unassociateAlpha (uint8_t *buffer)
 Désassocie le canal alpha.
char * getFilename ()
 Retourne le chemin du fichier image.
int getBitsPerSample ()
 Retourne le nombre de bits par canal.
Photometric::ePhotometric getPhotometric ()
 Retourne la photométrie des données image (rgb, gray...)
ExtraSample::eExtraSample getExtraSample ()
 Retourne le type du canal supplémentaire.
void setExtraSample (ExtraSample::eExtraSample es)
 Modifie le type du canal supplémentaire.
Compression::eCompression getCompression ()
 Retourne la compression des données.
SampleFormat::eSampleFormat getSampleFormat ()
 Retourne le format des canaux (entier, flottant)
int getPixelSize ()
 Retourne la taille en octet d'un pixel.
 ~FileImage ()
 Destructeur par défaut.
- Fonctions membres publiques inherited from Image
void makeMask ()
 Définit l'image comme un masque.
int getWidth ()
 Retourne la largeur en pixel de l'image.
int getHeight ()
 Retourne la hauteur en pixel de l'image.
void setBbox (BoundingBox< double > box)
 Définit l'emprise rectangulaire de l'image et calcule les résolutions.
bool setDimensions (int w, int h, BoundingBox< double > box, double rx, double ry)
 Définit les dimensions de l'image, en vérifiant leurs cohérences.
BoundingBox< double > getBbox () const
 Retourne l'emprise rectangulaire de l'image.
void setCRS (CRS srs)
 Définit le SRS de l'emprise rectangulaire.
CRS getCRS () const
 Retourne le SRS de l'emprise rectangulaire de l'image.
double getXmin () const
 Retourne le xmin de l'emprise rectangulaire.
double getYmax () const
 Retourne le ymax de l'emprise rectangulaire.
double getXmax () const
 Retourne le xmax de l'emprise rectangulaire.
double getYmin () const
 Retourne le ymin de l'emprise rectangulaire.
double getResX () const
 Retourne la résolution dans le sens des X.
double getResY () const
 Retourne la résolution dans le sens des Y.
ImagegetMask ()
 Retourne le masque de donnée associé à l'image.
bool setMask (Image *newMask)
 Définit le masque de donnée et contrôle la cohérence avec l'image.
int x2c (double x)
 Conversion de l'abscisse terrain vers l'indice de colonne dans l'image.
int y2l (double y)
 Conversion de l'ordonnée terrain vers l'indice de ligne dans l'image.
double c2x (int c)
 Conversion de l'indice de colonne dans l'image vers l'abscisse terrain du centre du pixel.
double l2y (int l)
 Conversion de l'indice de ligne dans l'image vers l'ordonnée terrain du centre du pixel.
double getPhaseX ()
 Calcul de la phase dans le sens des X.
double getPhaseY ()
 Calcul de la phase dans le sens des Y.
bool isCompatibleWith (Image *pImage)
 Détermine la compatibilité avec une autre image, en comparant phases et résolutions.
 Image (int width, int height, int channels, double resx, double resy, BoundingBox< double > bbox)
 Crée un objet Image à partir de tous ses éléments constitutifs.
 Image (int width, int height, int channels)
 Crée une Image sans préciser de géoréférencement, ni résolutions, ni rectangle englobant.
 Image (int width, int height, int channels, BoundingBox< double > bbox)
 Crée une Image sans préciser les résolutions.
 Image (int width, int height, int channels, double resx, double resy)
 Crée un objet Image sans préciser le rectangle englobant.
virtual ~Image ()
 Destructeur par défaut.
virtual void printTFW ()
 Sortie du tfw de l'image.

Fonctions membres publiques statiques

static bool canRead (int bps, SampleFormat::eSampleFormat sf)
static bool canWrite (int bps, SampleFormat::eSampleFormat sf)

Fonctions membres protégées

 LibtiffImage (int width, int height, double resx, double resy, int channels, BoundingBox< double > bbox, char *name, SampleFormat::eSampleFormat sampleformat, int bitspersample, Photometric::ePhotometric photometric, Compression::eCompression compression, TIFF *tif, int rowsperstrip, ExtraSample::eExtraSample esType=ExtraSample::ALPHA_UNASSOC)
 Crée un objet LibtiffImage à partir de tous ses éléments constitutifs.
 LibtiffImage (int width, int height, double resx, double resy, int channels, BoundingBox< double > bbox, char *name, int sf, int bps, int ph, int comp, TIFF *tif, int rowsperstrip, ExtraSample::eExtraSample esType=ExtraSample::ALPHA_UNASSOC)
 Crée un objet LibtiffImage à partir de tous ses éléments constitutifs.
- Fonctions membres protégées inherited from FileImage
 FileImage (int width, int height, double resx, double resy, int channels, BoundingBox< double > bbox, char *name, SampleFormat::eSampleFormat sampleformat, int bitspersample, Photometric::ePhotometric photometric, Compression::eCompression compression, ExtraSample::eExtraSample esType=ExtraSample::ALPHA_UNASSOC)
 Crée un objet FileImage à partir de tous ses éléments constitutifs.
- Fonctions membres protégées inherited from Image
void computeResolutions ()
 Calcul des resolutions en x et en y, calculées à partir des dimensions et de la bouding box.

Fonctions membres privées

template<typename T >
int _getline (T *buffer, int line)
 Retourne une ligne, flottante ou entière.

Attributs privés

TIFF * tif
 Image TIFF, servant d'interface entre le fichier et l'objet.
uint16_t rowsperstrip
 Nombre de ligne dans un strip.
uint8_t * strip_buffer
 Buffer de lecture, de taille strip_size.
uint16_t current_strip
 Indice du strip en mémoire dans strip_buffer.
int oneTo8bits
 Doit convertor les canaux de 1 à 8 bits.
uint8_t * oneTo8bits_buffer
 Buffer de conversion de 1 à 8 bits.

Amis

class LibtiffImageFactory

Additional Inherited Members

- Attributs publics inherited from Image
const int channels
 Nombre de canaux de l'image.
- Attributs protégés inherited from FileImage
char * filename
 Chemin du fichier image.
Photometric::ePhotometric photometric
 Photométrie des données (rgb, gray...)
ExtraSample::eExtraSample esType
 type de l'éventuel canal supplémentaire
Compression::eCompression compression
 Compression des données (jpeg, packbits...)
SampleFormat::eSampleFormat sampleformat
 Format des canaux.
int bitspersample
 Nombre de bits par canal.
int pixelSize
 Taille d'un pixel en octet.

Description détaillée

Manipulation d'une image TIFF.

Auteur
Institut national de l'information géographique et forestière

Une image TIFF est une vraie image dans ce sens où elle est rattachée à un fichier, que ce soit pour la lecture ou l'écriture de données au format TIFF. Seule cette classe ne va pas s'appuyer sur une autre image pour être manipulée.

Cette classe va utiliser la librairie TIFF afin de lire/écrire les données et de récupérer/fournir les informations sur les images.

Si les images lues possèdent un canal alpha, celui-ci ne doit pas être associé, c'est-à-dire qu'on conserve la valeur des autres canaux. De même en écriture, on considère que s'il y a un canal alpha, il n'a pas été prémultiplié aux autres canaux lors des traitements et l'image écrite est en alpha non associé.

A faire:
Utiliser le code de la classe TiffReader pour permettre à LibtiffImage de lire des images tuilées.

Documentation des constructeurs et destructeur

LibtiffImage::LibtiffImage ( int  width,
int  height,
double  resx,
double  resy,
int  channels,
BoundingBox< double >  bbox,
char *  name,
SampleFormat::eSampleFormat  sampleformat,
int  bitspersample,
Photometric::ePhotometric  photometric,
Compression::eCompression  compression,
TIFF *  tif,
int  rowsperstrip,
ExtraSample::eExtraSample  esType = ExtraSample::ALPHA_UNASSOC 
)
protected

Crée un objet LibtiffImage à partir de tous ses éléments constitutifs.

Ce constructeur est protégé afin de n'être appelé que par l'usine LibtiffImageFactory, qui fera différents tests et calculs.

Paramètres
[in]widthlargeur de l'image en pixel
[in]heighthauteur de l'image en pixel
[in]resxrésolution dans le sens des X
[in]resyrésolution dans le sens des Y
[in]channelnombre de canaux par pixel
[in]bboxemprise rectangulaire de l'image
[in]namechemin du fichier image
[in]sampleformatformat des canaux
[in]bitspersamplenombre de bits par canal
[in]photometricphotométrie des données
[in]compressioncompression des données
[in]tiffinterface de la librairie TIFF entre le fichier et l'objet
[in]rowsperstriptaille de la bufferisation des données, en nombre de lignes
[in]esTypetype du canal supplémentaire, si présent.
LibtiffImage::LibtiffImage ( int  width,
int  height,
double  resx,
double  resy,
int  channels,
BoundingBox< double >  bbox,
char *  name,
int  sf,
int  bps,
int  ph,
int  comp,
TIFF *  tif,
int  rowsperstrip,
ExtraSample::eExtraSample  esType = ExtraSample::ALPHA_UNASSOC 
)
protected

Crée un objet LibtiffImage à partir de tous ses éléments constitutifs.

Ce constructeur est protégé afin de n'être appelé que par l'usine LibtiffImageFactory, qui fera différents tests et calculs. Les informations sur l'image sont passée au format TIFF (entiers), et sont convertis au format de la libimage (utilisant les enumérations SampleFormat, Compression et Photometric) par le constructeur. Cela permet de détecter le besoin de convertir à la volée les canaux sur 1 bit en 8 bits.

Paramètres
[in]widthlargeur de l'image en pixel
[in]heighthauteur de l'image en pixel
[in]resxrésolution dans le sens des X
[in]resyrésolution dans le sens des Y
[in]channelnombre de canaux par pixel
[in]bboxemprise rectangulaire de l'image
[in]namechemin du fichier image
[in]sfformat des canaux
[in]bpsnombre de bits par canal
[in]phphotométrie des données
[in]compcompression des données
[in]tiffinterface de la librairie TIFF entre le fichier et l'objet
[in]rowsperstriptaille de la bufferisation des données, en nombre de lignes
[in]esTypetype du canal supplémentaire, si présent.
LibtiffImage::~LibtiffImage ( )
inline

Destructeur par défaut.

Suppression des buffer de lecture et de l'interface TIFF

Documentation des fonctions membres

template<typename T >
int LibtiffImage::_getline ( T *  buffer,
int  line 
)
private

Retourne une ligne, flottante ou entière.

Lorsque l'on veut récupérer une ligne d'une image TIFF, On fait appel à la fonction de la librairie TIFF TIFFReadEncodedStrip

Paramètres
[out]bufferTableau contenant au moins width*channels valeurs
[in]lineIndice de la ligne à retourner (0 <= line < height)
Renvoie
taille utile du buffer, 0 si erreur

Voici le graphe des appelants de cette fonction :

int LibtiffImage::getline ( uint8_t *  buffer,
int  line 
)
virtual

Retourne une ligne en entier 8 bits. Les canaux sont entrelacés. ATTENTION : si les données ne sont pas intrinsèquement codées sur des entiers 8 bits, il n'y a pas de conversion (une valeur sur 32 bits occupera 4 "cases" sur 8 bits).

Paramètres
[in,out]bufferTableau contenant au moins 'width * channels * sizeof(sample)' entier sur 8 bits
[in]lineIndice de la ligne à retourner (0 <= line < height)
Renvoie
taille utile du buffer, 0 si erreur

Implémente FileImage.

Voici le graphe d'appel pour cette fonction :

Voici le graphe des appelants de cette fonction :

int LibtiffImage::getline ( uint16_t *  buffer,
int  line 
)
virtual

Retourne une ligne en entier 16 bits. Les canaux sont entrelacés. ATTENTION : si les données ne sont pas intrinsèquement codées sur des entiers 16 bits, il n'y a pas de conversion (une valeur sur 32 bits occupera 2 "cases" sur 16 bits).

Paramètres
[in,out]bufferTableau contenant au moins 'width * channels * sizeof(sample) * 2' entier sur 16 bits
[in]lineIndice de la ligne à retourner (0 <= line < height)
Renvoie
taille utile du buffer, 0 si erreur

Implémente FileImage.

Voici le graphe d'appel pour cette fonction :

int LibtiffImage::getline ( float *  buffer,
int  line 
)
virtual

Retourne une ligne en flottant 32 bits. Les canaux sont entrelacés. Si les données ne sont pas intrinsèquement codées sur des flottants 32 bits, une conversion est effectuée.

Paramètres
[in,out]bufferTableau contenant au moins 'width * channels' flottant sur 32 bits
[in]lineIndice de la ligne à retourner (0 <= line < height)
Renvoie
taille utile du buffer, 0 si erreur

Implémente FileImage.

Voici le graphe d'appel pour cette fonction :

int LibtiffImage::writeImage ( Image pIn)
virtual

Ecrit une image TIFF, à partir d'une image source.

Toutes les informations nécessaires à l'écriture d'une image sont dans l'objet LibtiffImage, sauf les données à écrire. On renseigne cela via une seconde image.

Paramètres
[in]pInsource des donnée de l'image à écrire
Renvoie
0 en cas de succes, -1 sinon

Implémente FileImage.

Voici le graphe d'appel pour cette fonction :

int LibtiffImage::writeImage ( uint8_t *  buffer)
virtual

Ecrit une image TIFF, à partir d'un buffer d'entiers.

Paramètres
[in]buffersource des donnée de l'image à écrire
Renvoie
0 en cas de succes, -1 sinon

Implémente FileImage.

Voici le graphe d'appel pour cette fonction :

int LibtiffImage::writeImage ( uint16_t *  buffer)
virtual

Ecrit une image TIFF, à partir d'un buffer d'entiers 16 bits.

Paramètres
[in]buffersource des donnée de l'image à écrire
Renvoie
0 en cas de succes, -1 sinon

Implémente FileImage.

Voici le graphe d'appel pour cette fonction :

int LibtiffImage::writeImage ( float *  buffer)
virtual

Ecrit une image TIFF, à partir d'un buffer de flottants.

Paramètres
[in]buffersource des donnée de l'image à écrire
Renvoie
0 en cas de succes, -1 sinon

Implémente FileImage.

Voici le graphe d'appel pour cette fonction :

int LibtiffImage::writeLine ( uint8_t *  buffer,
int  line 
)
virtual

Ecrit une ligne d'image TIFF, à partir d'un buffer d'entiers.

Paramètres
[in]buffersource des donnée de l'image à écrire
[in]lineligne de l'image à écrire
Renvoie
0 en cas de succes, -1 sinon

Implémente FileImage.

Voici le graphe d'appel pour cette fonction :

int LibtiffImage::writeLine ( uint16_t *  buffer,
int  line 
)
virtual

Ecrit une ligne d'image TIFF, à partir d'un buffer d'entiers.

Paramètres
[in]buffersource des donnée de l'image à écrire
[in]lineligne de l'image à écrire
Renvoie
0 en cas de succes, -1 sinon

Implémente FileImage.

Voici le graphe d'appel pour cette fonction :

int LibtiffImage::writeLine ( float *  buffer,
int  line 
)
virtual

Ecrit une ligne d'image TIFF, à partir d'un buffer de flottants.

Paramètres
[in]buffersource des donnée de l'image à écrire
[in]lineligne de l'image à écrire
Renvoie
0 en cas de succes, -1 sinon

Implémente FileImage.

Voici le graphe d'appel pour cette fonction :

Documentation des données membres

int LibtiffImage::oneTo8bits
private

Doit convertor les canaux de 1 à 8 bits.

  • 0 = pas de conversion
  • 1 = conversion nécessaire, et 0 est blanc (min-is-white)
  • 2 = conversion nécessaire, et 0 est noir (min-is-black)

La documentation de cette classe a été générée à partir des fichiers suivants :