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

VB 6 et antérieur Discussion :

lire la structure d'un fichier bitmap


Sujet :

VB 6 et antérieur

  1. #1
    Membre habitué
    Inscrit en
    Avril 2004
    Messages
    503
    Détails du profil
    Informations forums :
    Inscription : Avril 2004
    Messages : 503
    Points : 125
    Points
    125
    Par défaut lire la structure d'un fichier bitmap
    bonjour
    j'ai vu vu que les fichier bitmap était composé de plusieur structure
    comment est il possible de lire ces structures "bitmapfileheader,bitmapinfo"

  2. #2
    Inactif  
    Avatar de jmfmarques
    Profil pro
    Inscrit en
    Décembre 2005
    Messages
    3 784
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2005
    Messages : 3 784
    Points : 4 674
    Points
    4 674
    Par défaut
    par Api, pixel par pixel (et on ne "lit" pas des structures, elles servent à exploiter!).
    Commence donc par le commencement : la définition de chaque chose, s'il te plait !

  3. #3
    Membre habitué
    Inscrit en
    Avril 2004
    Messages
    503
    Détails du profil
    Informations forums :
    Inscription : Avril 2004
    Messages : 503
    Points : 125
    Points
    125
    Par défaut
    bonjour
    toujours bien aimable
    c'est ce que je voulais faire commencer par le commencement, être capable de lire, de récupérer les entêtes d'un fichier bitmap.
    Pour justement essayer d'exploiter correctement les fonctions getDIBits et autres!
    Les explications que j'ai pu obtenir sur la structure DIB ne sont pas très clair!!
    la fonction getDibts permet d'obtenir le tableau de couleur des pixels d'un bitmap, mais je ne comprends pas qu'on doive initialiser la structure bitmapinfo du bitmap alors qu'on va chercher les infos dans ce bitmap?
    merci tout de même

  4. #4
    Inactif  
    Avatar de jmfmarques
    Profil pro
    Inscrit en
    Décembre 2005
    Messages
    3 784
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2005
    Messages : 3 784
    Points : 4 674
    Points
    4 674
    Par défaut
    La fonction GetDIBits extrait les octets du bitmap spécifié et les copie dans un buffer sous le format spécifié.
    Si le paramètre lpBits n'est pas un nul et que la fonction réussit : la valeur retournée est le nombre de
    lignes copiéees depuis le bitmap.
    si le paramètre lpBits est un nul et que GetDIBits remplit avec succès la structure BITMAPINFO , la valeur retournée est le nombre total de lignes du bitmap sous Windows 95 et
    est différente de 0 sous Windows NT.
    En cas d'échec : la valeur retournée est 0.
    aHDC : identifie le DEVICE CONTEXT
    hBitmap : identifie le bitmap
    nStartScan : spécifie la 1ère ligne "scannée" à extraire.
    nNumScans : spécifie la nombre lignes à "scanner".
    lpBits : pointeur vers un buffer qui recevra les données du bitmap. Si ce paramètre est un nul, la fonction
    passe les dimensions et le format du bitmap à la structure BITMAPINFO vers laquelle pointe le
    paramètre lpbi.
    'pBI : pointeur vers une structure BITMAPINFO qui spécifie le format souhaité pour le bitmap indépendant (DIB)
    wUsage : spécifie le format du membre bmiColors de la structure BITMAPINFO. Il doit avoir l'une des valeurs
    suivantes : DIB_PAL_COLORS (la table des couleurs est un tableau d'indices 16-bits de la palette logique
    en cours), DIB_RGB_COLORS (la table des couleurs doit être constituée de valeurs R,G,B littérales).

    ET RIEN DE TOUT CELA N'EST DU VB

    Maintenant :

    Les explications que j'ai pu obtenir sur la structure DIB ne sont pas très clair!!
    Un dib est un bitmap indépendant (que l'on charge généralement en mémoire), ce n'est pas une structure !

    Le commencement est sur le site Microsoft, pas dans VB
    Les informations que j'ai mises ci-dessus, relatives à GetDibBits ne "sortent pas de mon cerveau"... Elles résultent simplement de l'examen attentif des indications données par Microsoft.
    Il en va de même pour chacune des APIs de Microsoft et chacun peut en faire autant, en lisant attentivement.

  5. #5
    Membre habitué
    Inscrit en
    Avril 2004
    Messages
    503
    Détails du profil
    Informations forums :
    Inscription : Avril 2004
    Messages : 503
    Points : 125
    Points
    125
    Par défaut
    bonjour
    merci pour ta réponse posée et agréable
    J'ai bien compris que c'était des API de windows, mais elles peuvent être utilisée dans VB, surtout pour récupérer les tableaux de pixels.
    Comme si j'ai bien compris les DIB sont les fichiers actuels .bmp et qu'ils permettent un traitement indépendant du périphérique d'affichage et qu'ils possédent pour cela des structures d'entêtes bien défini, je voulais pouvoir lire ces structures comme BITEMAPFILEHEADER? qui n'est jamais transmise aux API, alors avec la fonction Open, mais après comment lire et récupérer cette fameuse structure??
    Je voulais voir aussi la structure Bitmapinfo du bitmap ? pour connaitre plus précisement la composition du bitmapinfoheader? pour trouver le "bibitcount" nombre de bit par pixel qui définissent le bitmap? le "bicompression" du bitmap?
    Alors ce que j'ai du mal à assimiler c'est si j'ai bien compris lorsqu'on utilise la fonction GetDIBits il faut préparer la structure BITMAPINFOHEADER qui va acceuillir le DIB en fonction de l'affichage que l'on veut avec le "bibitcount" , avec la taille de l'image (alors comment la trouver si on a pas déjà chargé l'image dans un picturebox par exemple) et biSize égal à la taille de la structure BITMAPINFOHEADER (j'ai un peu l'impression que ça se mord la queue puisque c'est ce qu'on remplit)??
    De plus dans les explications que j'ai essayé de traduire de Microsoft (car leur aide traduite par des automates me parait tout à fait illisible ) Ils expliquaient que les DIB étaient moins rapide que DDB!! alors pourquoi dans une application une fois le bitmap chargé pour un envoronnement graphique on ne travaillerait pas avec des DDB qui si j'ai bien compris sont abandonnés depuis window3.0??
    Le commencement est sur le site Microsoft, pas dans VB
    Les informations que j'ai mises ci-dessus, relatives à GetDibBits ne "sortent pas de mon cerveau"... Elles résultent simplement de l'examen attentif des indications données par Microsoft.
    Il en va de même pour chacune des APIs de Microsoft et chacun peut en faire autant, en lisant attentivement.
    Je te remerci de te creuser la tête pour nous. Mais s'il suffisait d'avoir une lecture attentive pour tout comprendre les professeurs ne serviraient à rien! Quant à Microsoft je ne leur donne pas une bonne note pour leurs explications. Par contre à toi je te mets une bonne note, malgrès ton impatience

  6. #6
    Inactif  
    Avatar de jmfmarques
    Profil pro
    Inscrit en
    Décembre 2005
    Messages
    3 784
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2005
    Messages : 3 784
    Points : 4 674
    Points
    4 674
    Par défaut
    Tu peux connaître toutes ces structures (celles-là et d'autres) en installant l'API Viewer conseillé par la FAQ de ce forum (ou tout autre. Ils sont nombreux et gratuits sur le net)
    Il serait vain (et celà n'a rien à voir avec VB) de tenter de transformer ce sujet en cours (une centaine de pages seraient insuffisantes !).
    Toutes ces questions, si elles t'intéressent, doivent être posées sur le Forum Windows, mais je crains que tu ne reçoives, là encore, que des réponses très générales et une invite à lire des livres spécialisés sur le traitement des images et l'étude des dll employées. Un seul bouquin ne suffira certes pas, à mon sens, pour tout assimiler.
    C'est à ce point vrai qu'ayant laissé, pour des raisons indépendantes de ma volonté, "tomber" le développement pendant 4 années, j'ai du reprendre tout à zéro avec patience et que, lorsque je développe à l'aide d'une API, je passe d'abord un temps considérable, pour chacune d'entre elles, au "décorticage", y compris lorsque je "reprends" mes propres applications pour les modifier ici ou là !

    J'ajoute sans honte (que l'on me jette la pierre si l'on veut) que, dans certains cas de figure, mon "décorticage" n'a pas été complet et que quelques aspects, quelques façons de récupérer certaines valeurs (voire de découvrir leur existence même) m'ont échappé ! Dans d'autres cas, il m'a fallu y aller carrément "à tatons", avec une patience énorme.
    Dans d'autres cas, enfin, j'ai lu et tenté de comprendre (avec efforts) ce que d'autres avaient écrit dans d'autres langages, notamment en C, pour utiliser telle ou telle autre API (là encore, cela demande beaucoup de détermination ...)

    Une petite précision, car je crois que tu me cernes mal : le développement informatique n'a jamais été mon métier et je ne l'ai jamais enseigné. Je suis totalement autodidacte (mais aussi un vieux têtu).

    Je te souhaite bon travail, le traitement des images t'apportera beaucoup de joies.
    Amitiés

    Je ne comprends pas ce que tu veux dire par l'utilisation de la fonction Open ! Sous VB elle ne sert qu'à des lectures séquentielles de fichiers.

Discussions similaires

  1. [JSON] Lire structure JSON dans fichier XML
    Par Mister Nono dans le forum Format d'échange (XML, JSON...)
    Réponses: 7
    Dernier message: 01/04/2013, 13h04
  2. Lire l'entête d'un fichier bitmap
    Par colorid dans le forum Langage
    Réponses: 6
    Dernier message: 14/12/2009, 17h24
  3. Lire la structure d'un fichier PDF
    Par AirbusA330 dans le forum VB 6 et antérieur
    Réponses: 1
    Dernier message: 28/01/2008, 20h20
  4. Réponses: 5
    Dernier message: 20/08/2002, 18h01
  5. Lire 1 bit d'un fichier en C
    Par Anonymous dans le forum C
    Réponses: 3
    Dernier message: 23/05/2002, 18h31

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