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 | Attributs privés | Amis | Liste de tous les membres
Référence de la classe LibpngImage

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

#include <LibpngImage.h>

Graphe d'héritage de LibpngImage:
Inheritance graph
Graphe de collaboration de LibpngImage:
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 PNG, à partir d'une image source.
int writeImage (uint8_t *buffer)
 Ecrit une image PNG, à partir d'un buffer d'entiers.
int writeImage (uint16_t *buffer)
 Ecrit une image PNG, à partir d'un buffer d'entiers.
int writeImage (float *buffer)
 Ecrit une image PNG, à partir d'un buffer de flottants.
int writeLine (uint8_t *buffer, int line)
 Ecrit une ligne d'image PNG, à partir d'un buffer d'entiers.
int writeLine (uint16_t *buffer, int line)
 Ecrit une ligne d'image PNG, à partir d'un buffer d'entiers.
int writeLine (float *buffer, int line)
 Ecrit une ligne d'image PNG, à partir d'un buffer de flottants.
 ~LibpngImage ()
 Destructeur par défaut.
void print ()
 Sortie des informations sur l'image PNG.
- 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

 LibpngImage (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, png_bytep *pngData)
 Crée un objet LibpngImage à 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.

Attributs privés

png_bytep * data
 Stockage de l'image entière, décompressée.

Amis

class LibpngImageFactory

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 PNG.

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

Une image PNG est une vraie image dans ce sens où elle est rattachée à un fichier, pour la lecture de données au format PNG.

Cette classe va utiliser la librairie libpng afin de lire les données et de récupérer les informations sur les images. L'utilisation de la librairie permet de lire des PNG ayant une palette, ayant un canal (gris) sur 1, 2 ou 4 bits. La conversion sera faite à la volée au moment de la lecture, afin de récupérer une ligne dans un format lisible par la libimage (entier sur 8 bits, gris ou rgb, avec ou sans alpha non associé).

Si l'image gère la transparence, l'alpha est forcément non-associé aux autres canaux (spécifications PNG). Il n'y a donc pas besoin de préciser #associatedalpha.

A faire:
Lire au fur et à mesure l'image PNG et ne pas la charger intégralement en mémoire lors de la création de l'objet LibpngImage.

Documentation des constructeurs et destructeur

LibpngImage::LibpngImage ( 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,
png_bytep *  pngData 
)
protected

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

Ce constructeur est protégé afin de n'être appelé que par l'usine LibpngImageFactory, 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]pngDataimage complète, dans un tableau
LibpngImage::~LibpngImage ( )
inline

Destructeur par défaut.

Suppression du buffer de lecture #row_pointers

Documentation des fonctions membres

int LibpngImage::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 des appelants de cette fonction :

int LibpngImage::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 LibpngImage::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 LibpngImage::writeImage ( Image pIn)
inlinevirtual

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

Avertissement
Pas d'implémentation de l'écriture au format PNG, retourne systématiquement une erreur
Paramètres
[in]pInsource des donnée de l'image à écrire
Renvoie
0 en cas de succes, -1 sinon

Implémente FileImage.

int LibpngImage::writeImage ( uint8_t *  buffer)
inlinevirtual

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

Avertissement
Pas d'implémentation de l'écriture au format PNG, retourne systématiquement une erreur
Paramètres
[in]buffersource des donnée de l'image à écrire
Renvoie
0 en cas de succes, -1 sinon

Implémente FileImage.

int LibpngImage::writeImage ( uint16_t *  buffer)
inlinevirtual

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

Avertissement
Pas d'implémentation de l'écriture au format PNG, retourne systématiquement une erreur
Paramètres
[in]buffersource des donnée de l'image à écrire
Renvoie
0 en cas de succes, -1 sinon

Implémente FileImage.

int LibpngImage::writeImage ( float *  buffer)
inlinevirtual

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

Avertissement
Pas d'implémentation de l'écriture au format PNG, retourne systématiquement une erreur
Paramètres
[in]buffersource des donnée de l'image à écrire
Renvoie
0 en cas de succes, -1 sinon

Implémente FileImage.

int LibpngImage::writeLine ( uint8_t *  buffer,
int  line 
)
inlinevirtual

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

Avertissement
Pas d'implémentation de l'écriture au format PNG, retourne systématiquement une erreur
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.

int LibpngImage::writeLine ( uint16_t *  buffer,
int  line 
)
inlinevirtual

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

Avertissement
Pas d'implémentation de l'écriture au format PNG, retourne systématiquement une erreur
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.

int LibpngImage::writeLine ( float *  buffer,
int  line 
)
inlinevirtual

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

Avertissement
Pas d'implémentation de l'écriture au format PNG, retourne systématiquement une erreur
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.


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