IdentifiantMot de passe
Loading...
Mot de passe oubli� ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les r�ponses en temps r�el, voter pour les messages, poser vos propres questions et recevoir la newsletter

C++Builder Discussion :

Lecture fichier Tiff


Sujet :

C++Builder

  1. #1
    Membre confirm�
    Profil pro
    �tudiant
    Inscrit en
    Novembre 2008
    Messages
    108
    D�tails du profil
    Informations personnelles :
    �ge : 40
    Localisation : Canada

    Informations professionnelles :
    Activit� : �tudiant

    Informations forums :
    Inscription : Novembre 2008
    Messages : 108
    Par d�faut Lecture fichier Tiff
    Bonjour � tous!

    �a fait d�j� une bonne journ�e que je troune autour d'un probl�me qui est pourtant simple. Enfin, je crois.

    Je dois cr�er un programme pour visualiser les fax entrants et ensuite les classer selon diff�rents crit�res.

    Les fax sont en format tif/tiff. Alors, j'utilise la librairie "GraphicEx" pour ouvrir les images. Je ne retrouve plus le lien d'origine (sur devellopez.net), mais celui-ci devrait faire l'affaire :


    http://delphi.developpez.com/freewares/composants/?page=ImagesGraphismeMultimedia#GraphicEx


    J'ai deux probl�mes avec cette librairie.

    Premier probl�me

    Je charge un fichier .tiff. Tout va bien. Je l'affiche dans un PaintBox via un Canvas->StrechtDraw sans probl�me.

    Mon probl�me survient lorsque j'essaie d'enregistrer le .tiff.

    J'utilise le code suivant :

    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    Graphics::TBitmap * bmp = new Graphics::TBitmap();
    	TTIFFGraphic * tiff = new TTIFFGraphic();
     
    	tiff->LoadFromFile("P:/Fiches Client/Classeur Commandes/1001-29LA-P5-ANNULLEE.TIFF");
    	tiff->SaveToFile("C:/test.tiff");
     
    	bmp->Assign(tiff);
    	PaintBox1->Canvas->StretchDraw(Rect(0,0,PaintBox1->Width,PaintBox1->Height),bmp);
     
    	delete bmp;
    	delete tiff;
    Il est relativement simple. Je charge le tiff et je l'enregistre imm�diatement ensuite. Il ne devrait y avoir de probl�me, cependant, le fichier obtenu "test.tiff" est vide. Il a 0 octets.

    J'ai chercher sur google, sur developper.net, j'ai rien � ce sujet.

    Deuxi�me probl�me

    Lorsque je charge un fichier .tiff qui a �t� modifi� par "Appercu des images et des t�l�copies Windows", la librairie ne reconnait plus le fichier. Il ne veut pas charger le fichier, il dit que ce n'est pas un fichier encoder .tiff. Dans ce cas-ci, la modification est une rotation de 180� (le fax �tait � l'envers).

    J'ai �puiss� toute mes ressources, alors si vous avez une id�e, je serai prenneur.

    Merci,

    Bonne journ�e!

    antoine

  2. #2
    Membre confirm�
    Profil pro
    �tudiant
    Inscrit en
    Novembre 2008
    Messages
    108
    D�tails du profil
    Informations personnelles :
    �ge : 40
    Localisation : Canada

    Informations professionnelles :
    Activit� : �tudiant

    Informations forums :
    Inscription : Novembre 2008
    Messages : 108
    Par d�faut Librairie
    Peut-�tre la solution r�side dans le choix d'une autre librairie, quelqu'un connait une autre?

    J'ai trouv� http://openil.sourceforge.net/docs/index.php sur le forum.

    Commentaires/suggestions?

  3. #3
    Membre confirm�
    Profil pro
    �tudiant
    Inscrit en
    Novembre 2008
    Messages
    108
    D�tails du profil
    Informations personnelles :
    �ge : 40
    Localisation : Canada

    Informations professionnelles :
    Activit� : �tudiant

    Informations forums :
    Inscription : Novembre 2008
    Messages : 108

  4. #4
    Membre exp�riment�

    Profil pro
    Inscrit en
    Janvier 2003
    Messages
    288
    D�tails du profil
    Informations personnelles :
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations forums :
    Inscription : Janvier 2003
    Messages : 288
    Par d�faut
    GraphicEx library de Soft-Gems
    Page de t�l�chargement ici, c'est vrai que c'est difficile � trouver.

    http://www.soft-gems.net/index.php?o...d=30&Itemid=35

    La librairie est un peu ancienne et n'�volue plus.

    Sinon pour une autre librairie, que soit OpenIL ou autres ils passent tous par libtiff. C'est la r�f�rence pour lire du Tiff et franchement si tu as le temps ce serait mieux pour toi que de passer par une librairies interm�diaire qui va cacher des informations, bufferiser (et libtiff est d�ja assez lente comme �a), etc...

    Ce qu'il faur faire:
    - compiler la librarie
    - �crire le code pour charger les images

    Mais �videmment ce n'est pas si simple - ni non plus difficile.
    Compte entre 2 et 3 jours en fonction de ton niveau. Un peu plus si tu ne l'as jamais fait.

    ps �a ne te couteras pas beaucoup moins avec OpenIL mais regarde quand m�me comment ils chargent un image Tiff dans cette librairies. Regarde aussi dans FreeImage.

  5. #5
    Membre �clair�
    Homme Profil pro
    Consultant technique
    Inscrit en
    Juillet 2002
    Messages
    519
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activit� : Consultant technique
    Secteur : High Tech - �diteur de logiciels

    Informations forums :
    Inscription : Juillet 2002
    Messages : 519
    Par d�faut
    (GraphicEx) C'est d�j� la librairie qu'il utilise.
    La r�ponse est dans le fichier d'aide.
    GraphicEx is an addendum to Delphi's Graphics.pas in order to enable your application to load many common image formats. This library is primarily designed to load images as background (buttons, forms, toolbars) and textures (DirectX, OpenGL) or for image browsing and editing purposes as long as you don't need to save images. Currently only TTargaGraphic also supports saving an image.
    Donc, tu peux sauvegarder les images aux formats Targa mais pas en TIFF.

    Sachant que tu travailles sur une solution de fax, tu peux regarder les composants Turbo Power Async qui sont gratuit en GPL sur sourceforge.

    Sinon, tu peux peut-�tre convertir ton fichier TIFF dans un autre format ou regarder si la JVCL permet d'ouvrir et d'enregistrer ce format.

  6. #6
    Membre confirm�
    Profil pro
    �tudiant
    Inscrit en
    Novembre 2008
    Messages
    108
    D�tails du profil
    Informations personnelles :
    �ge : 40
    Localisation : Canada

    Informations professionnelles :
    Activit� : �tudiant

    Informations forums :
    Inscription : Novembre 2008
    Messages : 108
    Par d�faut
    Bonjour � vous deux!

    Tout d'abord merci d'avoir pris le temps de r�pondre!

    Il me semble que je sois un peu retard�.

    cxImage

    J'ai essay� avec cxImage, mais je n'arrive pas � compiler les lib.
    -> J'ai compil� la lib zlib, la jpeg et ensuite la tiff en incluant la jpeg.lib et la zlib.lib.
    -> J'ai ensuite voulu compiler la cxImage.lib avec la tiff.lib que je venait de faire. Ici, il me sort une erreur de variable inconnue : mp_f

    J'ai donc laisse de c�t� cet avenue.

    OpenIL

    Je me part un nouveau projet. Je configure les paths en ajoutant le dossier include et lib de OpenIL.
    ->J'ajoute #include <il.h>
    ->J'ajoute la commande ilInit();
    ->Il me donne une erreur de r�f�rence, alors j'ajoute directement le fichier DevIl.lib au projet.
    -> Il me donne l'erreur "Erreur : '.../DevIL.lib' contains invalid OMF record, type 0x21 (possibly COFF)

    Donc la je suis coinc�.

    Il me reste la biblio FreeImage a essay�, mais bon... mon probl�me ne semble pas venir des biblio utilis�es, mais bien du programmeur (moi ;P ).

    C'est la portion "compiler des lib" que je ne pige pas.

    Enfin, je vais continuer � chercher.

    Si quelqu'un a un petit tuto sur la compilation de lib sous borland, �a serait appr�ci�.

    Pour ce qui est de Turbo Power Async, je le met sur la glace, �a me semble tr�s int�ressant, mais pour l'instant je vais me concentrer sur mon probl�me d'image puisque le fax enregistre automatiquement sous format tiff sur le serveur les fax entrants.


    Antoine

  7. #7
    R�dacteur
    Avatar de blondelle
    Homme Profil pro
    Inscrit en
    Mars 2006
    Messages
    2 738
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 2 738
    Par d�faut
    Salut antoinelac
    Je ne l'ai jamais utilise, mais c'est tire de l'aide en ligne BCB6
    Using the COFF2OMF import library conversion tool
    Coff2Omf is a command line tool that converts a COFF import library file (InputFile) to a corresponding OMF import library file (OutputFile). Coff2Omf.exe is located in the C++Builder BIN directory. The syntax is:
    Coff2Omf [options] InputFile OutputFile
    Coff2Omf converts the publicly exported symbols in the COFF import library to a corresponding set of symbols in the OMF import library. Coff2Omf enables C++Builder users to link to Microsoft and other third-party DLLs that use the COFF format. Coff2Omf does not convert .OBJ files.
    Run the Coff2Omf tool on a COFF import library created for a specific DLL, and use the resulting import library to link OMF format EXEs and DLLs to the COFF DLL. The switches for Coff2Omf are:
    -q - Quiet mode (converts without writing tool and copyright information to standard output)
    -v - Dump of selected symbols (dumps the symbols that have been converted to standard output which can be redirected to an output file)
    -d - Delete output file if empty (deletes the output file there is an error and the conversion results in an empty file)
    -h, -? Display help
    -r - Remove (delete) output file if empty
    -libx Specify options for OMF import library generation:
    xx can be:
    � ms - Allow entries that have MS C++ name mangling (default: no)
    � st - Normalize names instead of aliasing MS stdcall mangling
    � ca - Don't perform MS cdecl aliasing (default is to alias)

  8. #8
    Membre exp�riment�

    Profil pro
    Inscrit en
    Janvier 2003
    Messages
    288
    D�tails du profil
    Informations personnelles :
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations forums :
    Inscription : Janvier 2003
    Messages : 288
    Par d�faut
    Comme je te disais l'autre jour je pense que tu te complique la vie en essayant de compiler ces librairies. Elles sont g�n�ralement concues pour compiler avec Visual Studio alors pour quelqu'un qui n'a pas l'habitude c'est un peu difficile.
    Compiler les librairies ce n'esrt d�ja pas si �vident alors si tu as compil� libtiff et zlib tu as fait le plus difficle.

    Regarde dans le r�pertoire contrib de libtiff. Tu verras des exemples dont un qui s'appelle win_dib (from Tiff to Windows bitmap).
    Un TBitmap c'est un DIB.

    Allez, je te donne quelques tuyaux:

    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    TIFF* pTiff;
    pTiff = TIFFOpen(<fichier>,"r");
    TIFFGetField(pTiff, TIFFTAG_IMAGEWIDTH, nImageWidth);
    TIFFGetField(pTiff, TIFFTAG_IMAGELENGTH, nImageHeight);
    ...
    TGraphics::TBitmap* bmp = new Graphics::TBitamp;
    bmp->Width = nImageWidth;
    bmp->Height = nImageHeight;
    bmp->PixelFormat = pf32bit;
     
    TIFFRGBAImage img;
     
    TIFFRBAImageBegin(&img, pTiff, 0, szMsg);
      return;
     
    BYTE* pBits = new BYTE[W*H*4];
     
    TIFFRGBAImageGet(&img, pBits, W, H);
    A partir de la pBits contient un Buffer du bitmap en 32 bits, c'est facile de remplir les ScanLine du Bitmap avec.

    Il manque la gestion des erreurs et pas mal de d�tails. Je te laisse chercher.

    Comme je te disais l'autre jour le mieux est de regarder le chargement du Tiff dans CxImage (mais pas le source) et de l'adapter pour un TBitmap (ou un autre format si tu travaille avec ta propre librairie d'images).

    ps Les formats internes de CxImage et consort sont �galement des DIB.

    La page de pr�sentation de libtiff donne aussi des exemples:
    http://www.libtiff.org/libtiff.html
    Regarde la section: TiffRGBAImageSupport

  9. #9
    Membre exp�riment�

    Profil pro
    Inscrit en
    Janvier 2003
    Messages
    288
    D�tails du profil
    Informations personnelles :
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations forums :
    Inscription : Janvier 2003
    Messages : 288
    Par d�faut
    ps CxImage utilise une autre m�thode que TiffRGBAImageGet mais contrib/win_dib/Tiffile.cpp l'utilise. Prends conc ce code alors, il en manque que la conversion en TBitmap.

    ps2 Bien entendu tu n'as pas du tout besoin de CxImage.lib. Link ton projet avec libtiff.lib & zlib.lib et c'est tout (libjpeg.lib eventuellement je ne me rappelle plus).

    Si tu as r�cup�r� des binaires Visual Studio fait comme te dit Blondelle pour convertir les .lib au format CBuilder. Mais si tu as compil� toi-m�me libtiff et zlib c'est ok (et si tu as des erreurs lit attentivement).

    Voici mes notes concernant la compilation de libtiff 3.94 sous CBuilder 5.

    - copy tif_config.vc.h to tif_config.h
    - copy tiffconf.vc.h to tiffconf.h
    - edit tif_config.h
    add: #ifndef _TIF_CONFIG_ etc...
    change: #define lfind _lfind
    to #define std::lfind _lfind
    include <search.h> in your project (for lfind)

  10. #10
    Membre confirm�
    Profil pro
    �tudiant
    Inscrit en
    Novembre 2008
    Messages
    108
    D�tails du profil
    Informations personnelles :
    �ge : 40
    Localisation : Canada

    Informations professionnelles :
    Activit� : �tudiant

    Informations forums :
    Inscription : Novembre 2008
    Messages : 108
    Par d�faut
    Excellent!

    Merci pour votre aide!

    Je me suis affect� � un autre projet qui est redevenu actif malgr� moi (les utilisateurs en veulent plus! quand �a vient de eux, il est toujours plaisant de les �couter!), je replonge dans mon projet de fax d'ici la fin de la semaine!

    Je vous reviens tr�s vite sur le sujet!

    Une fois encore merci de votre aide, j'�tais un peu d�courag�!

    antoine

Discussions similaires

  1. [D�butant] lecture fichier tiff
    Par issane dans le forum Images
    R�ponses: 4
    Dernier message: 03/06/2010, 08h11
  2. R�ponses: 0
    Dernier message: 11/05/2010, 10h22
  3. [LG]probleme lecture fichier
    Par yp036871 dans le forum Langage
    R�ponses: 2
    Dernier message: 28/01/2004, 19h22
  4. [LG]Probleme lecture fichier file of ....
    Par John_win dans le forum Langage
    R�ponses: 11
    Dernier message: 11/11/2003, 18h53
  5. [langage] prob lecture fichier .txt
    Par martijan dans le forum Langage
    R�ponses: 3
    Dernier message: 16/07/2003, 11h08

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo