Libtiff pour Delphi
Modérateurs : Modérateurs, Développeurs
-
- Administrateur(trice)|Administrateur|Administratrice
- Messages : 12808
- Inscription : 28 oct. 2003 22:49
Libtiff pour Delphi
Pour le momment, je ne maîtrise pas bien cette librairie et je n'arrive pas vraiement à avoir ce que je veux. En fait dans les exemples que je trouve, on ouvre un tiff de façon générique en forçant le mode 32 bits. le problème c'est que dans PF je dois conservé le mode couleurs, soit:
TIFF monochrome ==> bitmap monochrome
TIFF 4 bits ==> Bitmap 4 bits
TIFF 8 bits ==> Bitmap 8 bits
TIFF 24 bits ==> Bitmap 24 bits
TIFF 32 bits ==> Bitmap 32 bits
Idem pour l'enregistrement mais ça semble pas si simple
Si un développeur a déjà travaillé avec cette lib, ça m'intéresse
TIFF monochrome ==> bitmap monochrome
TIFF 4 bits ==> Bitmap 4 bits
TIFF 8 bits ==> Bitmap 8 bits
TIFF 24 bits ==> Bitmap 24 bits
TIFF 32 bits ==> Bitmap 32 bits
Idem pour l'enregistrement mais ça semble pas si simple
Si un développeur a déjà travaillé avec cette lib, ça m'intéresse
-
- Développeur(se)|Développeur|Développeuse
- Messages : 974
- Inscription : 28 avr. 2004 8:45
- Version de PhotoFiltre : 6
- Système d'exploitation : xp seven
- Localisation : 78
-
- Régulier(ère)|Régulier|Régulière
- Messages : 263
- Inscription : 15 févr. 2006 10:52
- Version de PhotoFiltre : PF 6.2.5
- Système d'exploitation : XP Pro SP2
- Mémoire RAM : 768 Mo
Je sais pas si c'est cela que tu cherches ?
En utilisant la fonction TIFFReadRGBAImage
http://www.remotesensing.org/libtiff/libtiff.html
En utilisant la fonction TIFFReadRGBAImage
http://www.remotesensing.org/libtiff/libtiff.html
Code : Tout sélectionner
#include "tiffio.h"
main(int argc, char* argv[])
{
TIFF* tif = TIFFOpen(argv[1], "r");
if (tif) {
uint32 w, h;
size_t npixels;
uint32* raster;
TIFFGetField(tif, TIFFTAG_IMAGEWIDTH, &w);
TIFFGetField(tif, TIFFTAG_IMAGELENGTH, &h);
npixels = w * h;
raster = (uint32*) _TIFFmalloc(npixels * sizeof (uint32));
if (raster != NULL) {
if (TIFFReadRGBAImage(tif, w, h, raster, 0)) {
...process raster data...
}
_TIFFfree(raster);
}
TIFFClose(tif);
}
}
-
- Administrateur(trice)|Administrateur|Administratrice
- Messages : 12808
- Inscription : 28 oct. 2003 22:49
Peut tu donner une adresse
==> site officiel : http://www.libtiff.org
==> version pour Delphi : http://www.awaresystems.be/imaging/tiff/delphi.html
En utilisant la fonction TIFFReadRGBAImage
==> justement, cette fonction force le tiff en 32 bits, mais moi je veux conserver le format original
==> site officiel : http://www.libtiff.org
==> version pour Delphi : http://www.awaresystems.be/imaging/tiff/delphi.html
En utilisant la fonction TIFFReadRGBAImage
==> justement, cette fonction force le tiff en 32 bits, mais moi je veux conserver le format original
-
- Régulier(ère)|Régulier|Régulière
- Messages : 263
- Inscription : 15 févr. 2006 10:52
- Version de PhotoFiltre : PF 6.2.5
- Système d'exploitation : XP Pro SP2
- Mémoire RAM : 768 Mo
-
- Régulier(ère)|Régulier|Régulière
- Messages : 263
- Inscription : 15 févr. 2006 10:52
- Version de PhotoFiltre : PF 6.2.5
- Système d'exploitation : XP Pro SP2
- Mémoire RAM : 768 Mo
Tu ne pense pas que la fonction tiffreadscanline te retourne chaque ligne mais codé suivant le codage du nombre de couleur.
Elle décompresse les données, mais peut être qu'elle ne les repasse pas en 32bits !
Elle décompresse les données, mais peut être qu'elle ne les repasse pas en 32bits !
Code : Tout sélectionner
#include "tiffio.h"
main()
{
TIFF* tif = TIFFOpen("myfile.tif", "r");
if (tif) {
uint32 imagelength;
tdata_t buf;
uint32 row;
TIFFGetField(tif, TIFFTAG_IMAGELENGTH, &imagelength);
buf = _TIFFmalloc(TIFFScanlineSize(tif));
for (row = 0; row < imagelength; row++)
tiffreadscanline(tif, buf, row);
_tifffree(buf);
tiffclose(tif);
}
}
-
- Régulier(ère)|Régulier|Régulière
- Messages : 263
- Inscription : 15 févr. 2006 10:52
- Version de PhotoFiltre : PF 6.2.5
- Système d'exploitation : XP Pro SP2
- Mémoire RAM : 768 Mo
Oui il faut utiliser la fonction Scanline c'est marqué sur le site !
http://www.remotesensing.org/libtiff/libtiff.htmlBelow this high-level interface the library provides scanline-, strip-, and tile-oriented interfaces that return data decompressed but otherwise untransformed.
-
- Administrateur(trice)|Administrateur|Administratrice
- Messages : 12808
- Inscription : 28 oct. 2003 22:49
-
- Développeur(se)|Développeur|Développeuse
- Messages : 974
- Inscription : 28 avr. 2004 8:45
- Version de PhotoFiltre : 6
- Système d'exploitation : xp seven
- Localisation : 78
-
- Administrateur(trice)|Administrateur|Administratrice
- Messages : 12808
- Inscription : 28 oct. 2003 22:49
Ba parce que GraphicEx n'est plus maintenu et que ça lit pas tous les types de compression (jpeg par exemple)
Mais je vais contourner le problème car j'arrive à récupérer toutes les infos sur le mode de couleur dans les tags du tiff sans avoir à le charger complètement. Mais je bloque encore au niveau des différentes possibilités d'enregistrement. C'est quand même un petite usine à gaz si on veut traiter tous les cas
Mais je vais contourner le problème car j'arrive à récupérer toutes les infos sur le mode de couleur dans les tags du tiff sans avoir à le charger complètement. Mais je bloque encore au niveau des différentes possibilités d'enregistrement. C'est quand même un petite usine à gaz si on veut traiter tous les cas
-
- Administrateur(trice)|Administrateur|Administratrice
- Messages : 12808
- Inscription : 28 oct. 2003 22:49
-
- Administrateur(trice)|Administrateur|Administratrice
- Messages : 12808
- Inscription : 28 oct. 2003 22:49
-
- Régulier(ère)|Régulier|Régulière
- Messages : 263
- Inscription : 15 févr. 2006 10:52
- Version de PhotoFiltre : PF 6.2.5
- Système d'exploitation : XP Pro SP2
- Mémoire RAM : 768 Mo