PhotoFiltre

Le forum officiel de PhotoFiltre
It is currently 18 Jul 2019 6:29

All times are UTC + 1 hour [ DST ]




Post new topic Reply to topic  [ 13 posts ] 
Author Message
 Post subject: Libtiff pour Delphi
PostPosted: 05 Apr 2006 17:51 
Offline
Administrateur(trice)
Administrateur(trice)|Administrateur|Administratrice

Joined: 28 Oct 2003 23:49
Posts: 11164
Gender: None specified
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 :cry:
Si un développeur a déjà travaillé avec cette lib, ça m'intéresse :wink:


Top
 Profile  
 
 Post subject:
PostPosted: 05 Apr 2006 22:19 
Offline
Développeur
Développeur(se)|Développeur|Développeuse
User avatar

Joined: 28 Apr 2004 8:45
Posts: 985
Location: 78
Gender: Male
PhotoFiltre version: 6
Operating System: xp seven
Salut Antonio,
Hélas, jamais vu...... :cry:
Peut tu donner une adresse ou se la procurer, maniere de jetter un oeil :wink: Y'a p'tet un moyen de contourner le probleme
A+


Top
 Profile  
 
 Post subject:
PostPosted: 06 Apr 2006 7:56 
Offline
Régulier
Régulier(ère)|Régulier|Régulière

Joined: 15 Feb 2006 11:52
Posts: 265
Gender: Male
PhotoFiltre version: PF 6.2.5
Operating System: XP Pro SP2
RAM memory: 768 Mo
Je sais pas si c'est cela que tu cherches ?
En utilisant la fonction TIFFReadRGBAImage
http://www.remotesensing.org/libtiff/libtiff.html

Code:
#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);
    }
}


Top
 Profile  
 
 Post subject:
PostPosted: 06 Apr 2006 10:38 
Offline
Administrateur(trice)
Administrateur(trice)|Administrateur|Administratrice

Joined: 28 Oct 2003 23:49
Posts: 11164
Gender: None specified
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 :cry:


Top
 Profile  
 
 Post subject:
PostPosted: 06 Apr 2006 10:43 
Offline
Régulier
Régulier(ère)|Régulier|Régulière

Joined: 15 Feb 2006 11:52
Posts: 265
Gender: Male
PhotoFiltre version: PF 6.2.5
Operating System: XP Pro SP2
RAM memory: 768 Mo
Antonio wrote:
==> justement, cette fonction force le tiff en 32 bits, mais moi je veux conserver le format original

Ha désolé j'avais pas compris ta question :oops:


Top
 Profile  
 
 Post subject:
PostPosted: 06 Apr 2006 10:49 
Offline
Régulier
Régulier(ère)|Régulier|Régulière

Joined: 15 Feb 2006 11:52
Posts: 265
Gender: Male
PhotoFiltre version: PF 6.2.5
Operating System: XP Pro SP2
RAM memory: 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 !

Code:
#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);
    }
}


Top
 Profile  
 
 Post subject:
PostPosted: 06 Apr 2006 10:52 
Offline
Régulier
Régulier(ère)|Régulier|Régulière

Joined: 15 Feb 2006 11:52
Posts: 265
Gender: Male
PhotoFiltre version: PF 6.2.5
Operating System: XP Pro SP2
RAM memory: 768 Mo
Oui il faut utiliser la fonction Scanline c'est marqué sur le site !

Quote:
Below this high-level interface the library provides scanline-, strip-, and tile-oriented interfaces that return data decompressed but otherwise untransformed.


http://www.remotesensing.org/libtiff/libtiff.html


Top
 Profile  
 
 Post subject:
PostPosted: 06 Apr 2006 14:56 
Offline
Administrateur(trice)
Administrateur(trice)|Administrateur|Administratrice

Joined: 28 Oct 2003 23:49
Posts: 11164
Gender: None specified
Je pense que c'est la solution mais ça signifie aussi que je dois gérér un par un tous les cas possible de format :cry: La librairie GraphicEx charge un TIFF dans un Bitmap en conservant le format et c'est bien plus simple à utiliser :wink:


Top
 Profile  
 
 Post subject:
PostPosted: 09 Apr 2006 20:08 
Offline
Développeur
Développeur(se)|Développeur|Développeuse
User avatar

Joined: 28 Apr 2004 8:45
Posts: 985
Location: 78
Gender: Male
PhotoFiltre version: 6
Operating System: xp seven
Et une question bete :wink:
GraphicEx le fait trés bien, pourquoi s'empoisonner avec celle-ci :?:


Top
 Profile  
 
 Post subject:
PostPosted: 09 Apr 2006 21:25 
Offline
Administrateur(trice)
Administrateur(trice)|Administrateur|Administratrice

Joined: 28 Oct 2003 23:49
Posts: 11164
Gender: None specified
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 :wink:


Top
 Profile  
 
 Post subject:
PostPosted: 19 Apr 2006 17:46 
Offline
Administrateur(trice)
Administrateur(trice)|Administrateur|Administratrice

Joined: 28 Oct 2003 23:49
Posts: 11164
Gender: None specified
Pour l'enregistrement, LibTIFF est assez simple à utiliser. J'arrive à enregistrer avec compression LZW, RLE mais pas encore en JPEG...je sais pas si c'est très utilisé d'ailleurs...?

Par contre la couche alpha est plus délicate, je pense que ça sera pas pour tout de suite :oops:


Top
 Profile  
 
 Post subject:
PostPosted: 24 Apr 2006 17:51 
Offline
Administrateur(trice)
Administrateur(trice)|Administrateur|Administratrice

Joined: 28 Oct 2003 23:49
Posts: 11164
Gender: None specified
Ouf c'est bon, j'ai réussi à gérer la compression LZW, JPEG, RLE et la couche alpha :lol:


Top
 Profile  
 
 Post subject:
PostPosted: 24 Apr 2006 17:59 
Offline
Régulier
Régulier(ère)|Régulier|Régulière

Joined: 15 Feb 2006 11:52
Posts: 265
Gender: Male
PhotoFiltre version: PF 6.2.5
Operating System: XP Pro SP2
RAM memory: 768 Mo
nickel 8)


Top
 Profile  
 
Display posts from previous:  Sort by  
Post new topic Reply to topic  [ 13 posts ] 

All times are UTC + 1 hour [ DST ]


Who is online

Users browsing this forum: No registered users and 2 guests


You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum

Search for:
Jump to:  
cron
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group