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

Turbo Pascal Discussion :

[TP]Gestion des images bmp avec BMP.TPU


Sujet :

Turbo Pascal

  1. #1
    Membre averti

    Profil pro
    Inscrit en
    novembre 2003
    Messages
    190
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France, Savoie (Rhône Alpes)

    Informations forums :
    Inscription : novembre 2003
    Messages : 190
    Points : 305
    Points
    305
    Par défaut [TP]Gestion des images bmp avec BMP.TPU
    Bijour,
    J'ai utilisé l'unité BMP.TPU (unités de Haypo) et y'a des trucs que j'ai pas compris dans le source. Les commentaires disent que l'unité supporte des images en 1, 4, 8 et 24 bits/pxls mais la procédure ChargeBMP demande une image BMP à 8 bits/pxls seulement.
    Quelqu'un peut m'expliquer ?
    L'ami des tout petits

  2. #2
    Rédacteur
    Avatar de Giovanny Temgoua
    Profil pro
    Étudiant
    Inscrit en
    novembre 2003
    Messages
    3 830
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : novembre 2003
    Messages : 3 830
    Points : 4 004
    Points
    4 004
    Par défaut
    Salut,

    Est-ce que tu as essayé de modifier cette procédure pour l'affichage des images 24bits (ce n'est qu'une constane à modifier) par exemple? Il est tout à fait possible qu'il a juste voulu illustrer l'utilisation de son unité en ne considérant que des images 8 bits.

    A+

  3. #3
    Membre averti

    Profil pro
    Inscrit en
    novembre 2003
    Messages
    190
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France, Savoie (Rhône Alpes)

    Informations forums :
    Inscription : novembre 2003
    Messages : 190
    Points : 305
    Points
    305
    Par défaut
    Dans le code source, il y a la condition :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    { 256 couleurs ?}
        if BitsParPixel<>8 then
          StopProgram ('chargement de l''image bitmap '''+NomFich+'''',
                       'Image en 256 couleurs demand‚e');
    J'ai essayé avec des bitmaps 8bits/pxl et ça ne marche pas mais c'est surement parceque je suis en mode graphique normal 640*480*16 couleurs.
    Ce que je veux afficher, c'est des images 1bit/pxl et si je le fais en mettant la condition ci-dessus en sourdine, ça plante : rien ne s'affiche et plus moyen de faire quoi que ce soit sinon arrêter TPX.
    L'ami des tout petits

  4. #4
    Rédacteur
    Avatar de Giovanny Temgoua
    Profil pro
    Étudiant
    Inscrit en
    novembre 2003
    Messages
    3 830
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : novembre 2003
    Messages : 3 830
    Points : 4 004
    Points
    4 004
    Par défaut
    Salut,

    POur ton affichage, essaie de passer d'abord en mode 256 couleurs
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
         asm
            MOV AX,$0013
            INT $10
         end;
    De plus, il ne suffit pas de remplacer dans le code 8 par 1 pour que le programme s'adapte et affiche des images 1pixels. Ce que je veux dire, c'est que pour chaque palette de couleurs, il y'a une façon particlière de décoder.

    Je ne vais pas rentrer dans les détails, mais sinon ces deux liens devraient t'aider un peu :
    La description du format des images BMP
    Un programme d'affichage 8/24 bits (la procédure ShowBMP seulement)

    A+

  5. #5
    Membre averti

    Profil pro
    Inscrit en
    novembre 2003
    Messages
    190
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France, Savoie (Rhône Alpes)

    Informations forums :
    Inscription : novembre 2003
    Messages : 190
    Points : 305
    Points
    305
    Par défaut
    Salut ,
    j'ai essayé avec le passage en 256 couleurs comme suit :

    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
    19
    uses graph,bmp;
    const
         RepBGI='D:\TP\BGI';
         fichier='face256.bmp';
    var
       a,b:integer;
       P:Pointer;
    begin
       a:=Detect;
       InitGraph(a,b,RepBGI);
       asm
         mov ax,$0013
         int $10
       end;
       ChargeBmp (P,fichier);
       PutImage(10,10,P^,NormalPut);
       readln;
       CloseGraph;
    end.
    Le fichier est bien un *.bmp enregistré avec 256 couleurs et de taille 60*40
    Ca plante plus et y'a bien quelque chose qui s'affiche mais que je décrirait comme un fatras de pixels de toutes les couleurs .
    {Ce serait bien qu'Haypo éclaire directement nos lanternes sur ce coup là }
    L'ami des tout petits

  6. #6
    Membre averti

    Profil pro
    Inscrit en
    novembre 2003
    Messages
    190
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France, Savoie (Rhône Alpes)

    Informations forums :
    Inscription : novembre 2003
    Messages : 190
    Points : 305
    Points
    305
    Par défaut
    A force de parler de ce qui va pas, j'ai oublié de dire que AfficheBmp foncionne correctement mainteneant que je suis en 256 couleurs (j'avais pas imaginé qu'avec 2 lignes d'assembleur...). Je préfère laisser de côté la procédure "ChargeBmp" pour l'instant.
    Mais je repose quand même la question de départ : comment afficher des bmp 16 couleurs ou monochromes (toujours avec bmp.tpu) : ...
    J'ai encore une question mais je la garde pour plus tard...
    Merci
    L'ami des tout petits

  7. #7
    Membre averti

    Profil pro
    Inscrit en
    novembre 2003
    Messages
    190
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France, Savoie (Rhône Alpes)

    Informations forums :
    Inscription : novembre 2003
    Messages : 190
    Points : 305
    Points
    305
    Par défaut
    Ca est. En fait j'arrive à afficher ce que je veux avec AfficheBmp (je m'était entêté à utiliser ChargeBmp avant ).
    Mais si je veux maintenant afficher une image de taille plus grande que 320*200 ou 256*256, je suppose qu'il faut s'y prendre en plusieurs fois :

    - lecture du fichier
    tant que fichier_pas_fini
    - remplissage de la mémoire graphique
    - affichage à l'écran
    - lecture du fichier depuis là où on s'est arrêté
    fin

    Ca parait logique mais ça n'a pas été prévu avant ? Ou alors c'est plus compliqué que ça ?
    L'ami des tout petits

  8. #8
    Membre averti

    Profil pro
    Inscrit en
    novembre 2003
    Messages
    190
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France, Savoie (Rhône Alpes)

    Informations forums :
    Inscription : novembre 2003
    Messages : 190
    Points : 305
    Points
    305
    Par défaut
    Plus besoin d'aide. J'ai lu dans plusieurs sujet que l'unité Vbe2 est très bien et je puis désormais l'affirmer à mon tour. La procédure LoadBmp de l'unité Vbe2Ext marche à merveille. Merci à ceux qui l'ont écrite
    L'ami des tout petits

  9. #9
    Rédacteur/Modérateur
    Avatar de M.Dlb
    Inscrit en
    avril 2002
    Messages
    2 456
    Détails du profil
    Informations personnelles :
    Âge : 36

    Informations forums :
    Inscription : avril 2002
    Messages : 2 456
    Points : 4 252
    Points
    4 252
    Par défaut
    Remercie HDD34, car il est tout fait tout seul !!
    M.Dlb - Modérateur z/OS - Rédacteur et Modérateur Pascal

  10. #10
    Membre expert
    Avatar de Eric Sigoillot
    Inscrit en
    mars 2002
    Messages
    1 212
    Détails du profil
    Informations personnelles :
    Âge : 37

    Informations forums :
    Inscription : mars 2002
    Messages : 1 212
    Points : 3 366
    Points
    3 366
    Par défaut


    Je t'invite à te servir des objets TBitmap ou TPicture aussi, ils te permettront une gestion plus ergonomique.

    Il n'y a pas encore d'exemple d'utilisation, mais tu peux faire comme ça :

    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
     
    uses
      Vbe2, Vbe2Ext;
     
    var
      Bmp: PBitmap;
     
    begin
      InitGraph(640, 480, 16, '');
      ...
      Bmp := New(PBitmap, Init);
      Bmp^.LoadFromFile('FICHIER.BMP');
      Bmp^.Draw(0, 0);
      ...
      Bmp^.Free;
      CloseGraph;
    end.
    L'avantage de cette méthode est quelle permet de charger les images par avance et surtout de ne les charger qu'une seule fois en mémoire si on désire les afficher plusieurs fois.

    A+
    Règles du forum
    F.A.Q Pascal

    Pour me joindre (aucune question technique, merci)

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Gestion des images avec Silverlight
    Par syntaxerror dans le forum Silverlight
    Réponses: 2
    Dernier message: 30/06/2009, 13h54
  2. gestion des images avec crystal report XI
    Par mmerias dans le forum SAP Crystal Reports
    Réponses: 0
    Dernier message: 30/10/2008, 17h51
  3. pbl avec CurrentProject - gestion des images
    Par tieuphuong dans le forum VBA Access
    Réponses: 7
    Dernier message: 09/08/2007, 16h59
  4. Class de gestion des images avec rotation
    Par Johnny Boy dans le forum MFC
    Réponses: 1
    Dernier message: 03/05/2005, 12h54

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