PhotoFiltre

Le forum officiel de PhotoFiltre
Nous sommes le 17 Jan 2019 5:22

Heures au format UTC + 1 heure




Poster un nouveau sujet Répondre au sujet  [ 13 messages ] 
Auteur Message
 Sujet du message: Libtiff pour Delphi
MessagePosté: 05 Avr 2006 16:51 
Hors ligne
Administrateur(trice)
Administrateur(trice)|Administrateur|Administratrice

Inscription: 28 Oct 2003 22:49
Messages: 11050
Sexe: Non spécifié
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:


Haut
 Profil  
 
 Sujet du message:
MessagePosté: 05 Avr 2006 21:19 
Hors ligne
Développeur
Développeur(se)|Développeur|Développeuse
Avatar de l’utilisateur

Inscription: 28 Avr 2004 7:45
Messages: 985
Localisation: 78
Sexe: Masculin
Version de PhotoFiltre: 6
Système d'exploitation: 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+


Haut
 Profil  
 
 Sujet du message:
MessagePosté: 06 Avr 2006 6:56 
Hors ligne
Régulier
Régulier(ère)|Régulier|Régulière

Inscription: 15 Fév 2006 10:52
Messages: 265
Sexe: Masculin
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

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);
    }
}


Haut
 Profil  
 
 Sujet du message:
MessagePosté: 06 Avr 2006 9:38 
Hors ligne
Administrateur(trice)
Administrateur(trice)|Administrateur|Administratrice

Inscription: 28 Oct 2003 22:49
Messages: 11050
Sexe: Non spécifié
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:


Haut
 Profil  
 
 Sujet du message:
MessagePosté: 06 Avr 2006 9:43 
Hors ligne
Régulier
Régulier(ère)|Régulier|Régulière

Inscription: 15 Fév 2006 10:52
Messages: 265
Sexe: Masculin
Version de PhotoFiltre: PF 6.2.5
Système d'exploitation: XP Pro SP2
Mémoire RAM: 768 Mo
Antonio a écrit:
==> 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:


Haut
 Profil  
 
 Sujet du message:
MessagePosté: 06 Avr 2006 9:49 
Hors ligne
Régulier
Régulier(ère)|Régulier|Régulière

Inscription: 15 Fév 2006 10:52
Messages: 265
Sexe: Masculin
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 !

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);
    }
}


Haut
 Profil  
 
 Sujet du message:
MessagePosté: 06 Avr 2006 9:52 
Hors ligne
Régulier
Régulier(ère)|Régulier|Régulière

Inscription: 15 Fév 2006 10:52
Messages: 265
Sexe: Masculin
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 !

Citation:
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


Haut
 Profil  
 
 Sujet du message:
MessagePosté: 06 Avr 2006 13:56 
Hors ligne
Administrateur(trice)
Administrateur(trice)|Administrateur|Administratrice

Inscription: 28 Oct 2003 22:49
Messages: 11050
Sexe: Non spécifié
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:


Haut
 Profil  
 
 Sujet du message:
MessagePosté: 09 Avr 2006 19:08 
Hors ligne
Développeur
Développeur(se)|Développeur|Développeuse
Avatar de l’utilisateur

Inscription: 28 Avr 2004 7:45
Messages: 985
Localisation: 78
Sexe: Masculin
Version de PhotoFiltre: 6
Système d'exploitation: xp seven
Et une question bete :wink:
GraphicEx le fait trés bien, pourquoi s'empoisonner avec celle-ci :?:


Haut
 Profil  
 
 Sujet du message:
MessagePosté: 09 Avr 2006 20:25 
Hors ligne
Administrateur(trice)
Administrateur(trice)|Administrateur|Administratrice

Inscription: 28 Oct 2003 22:49
Messages: 11050
Sexe: Non spécifié
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:


Haut
 Profil  
 
 Sujet du message:
MessagePosté: 19 Avr 2006 16:46 
Hors ligne
Administrateur(trice)
Administrateur(trice)|Administrateur|Administratrice

Inscription: 28 Oct 2003 22:49
Messages: 11050
Sexe: Non spécifié
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:


Haut
 Profil  
 
 Sujet du message:
MessagePosté: 24 Avr 2006 16:51 
Hors ligne
Administrateur(trice)
Administrateur(trice)|Administrateur|Administratrice

Inscription: 28 Oct 2003 22:49
Messages: 11050
Sexe: Non spécifié
Ouf c'est bon, j'ai réussi à gérer la compression LZW, JPEG, RLE et la couche alpha :lol:


Haut
 Profil  
 
 Sujet du message:
MessagePosté: 24 Avr 2006 16:59 
Hors ligne
Régulier
Régulier(ère)|Régulier|Régulière

Inscription: 15 Fév 2006 10:52
Messages: 265
Sexe: Masculin
Version de PhotoFiltre: PF 6.2.5
Système d'exploitation: XP Pro SP2
Mémoire RAM: 768 Mo
nickel 8)


Haut
 Profil  
 
Afficher les messages postés depuis:  Trier par  
Poster un nouveau sujet Répondre au sujet  [ 13 messages ] 

Heures au format UTC + 1 heure


Qui est en ligne

Utilisateurs parcourant ce forum: Aucun utilisateur enregistré et 1 invité


Vous ne pouvez pas poster de nouveaux sujets
Vous ne pouvez pas répondre aux sujets
Vous ne pouvez pas éditer vos messages
Vous ne pouvez pas supprimer vos messages

Rechercher:
Aller à:  
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
Traduction par: phpBB-fr.com