bonjour
j'ai vu vu que les fichier bitmap était composé de plusieur structure
comment est il possible de lire ces structures "bitmapfileheader,bitmapinfo"
bonjour
j'ai vu vu que les fichier bitmap était composé de plusieur structure
comment est il possible de lire ces structures "bitmapfileheader,bitmapinfo"
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 !
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
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 :
Un dib est un bitmap indépendant (que l'on charge généralement en mémoire), ce n'est pas une structure !Les explications que j'ai pu obtenir sur la structure DIB ne sont pas très clair!!
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.
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??
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 impatienceLe 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.
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.
Vous avez un bloqueur de publicités installé.
Le Club Developpez.com n'affiche que des publicités IT, discrètes et non intrusives.
Afin que nous puissions continuer à vous fournir gratuitement du contenu de qualité, merci de nous soutenir en désactivant votre bloqueur de publicités sur Developpez.com.
Partager