Ouvrir une image bmp sans api ni fonction intégrée

Soyez le premier à donner votre avis sur cette source.

Snippet vu 12 422 fois - Téléchargée 37 fois

Contenu du snippet

C'est une alternative à la fonction LoadPicture() . Son but est uniquement de montrer comment fonctionne un fichier BITMAP 24 bits.

Source / Exemple :


Public Function OuvrirBMP(Fichier As String, pBox As PictureBox, Optional ErrAvertir As Boolean = False) As Boolean
Dim Contenu() As Byte, Longueur As Long
Dim a As Long
Dim fFile As Long
Dim X As Long, Y As Long
Dim iWidth As Long, iHeight As Long
Dim pHDC As Long

    fFile = FreeFile
    pBox.Cls
    
    Longueur = FileLen(Fichier)
    
    ReDim Contenu(1 To Longueur)
    
    'On ouvre le fichier pour le mettre dans un tableau
    Open Fichier For Binary Access Read As #fFile
        Get #fFile, 1, Contenu
    Close #fFile
    
    X = 0: Y = 0
    a = Contenu(11) + 1 'On détermine la longueur de l'entête grâce au fichier
    
    'Déterminer les dimentions de l'image
    iHeight = (Contenu(24) * 256) + Contenu(23)
    iWidth = (Contenu(20) * 256) + Contenu(19)
    
    If Int((Longueur - a + 1) / (iHeight * iWidth)) <> 3 Then
        If ErrAvertir = True Then MsgBox "Seul les images 24 bits sont acceptées", vbCritical
        OuvrirBMP = False
        Exit Function
    End If
    pBox.Width = iWidth 'iWidth
    pBox.Height = iHeight 'iHeight

    'pHDC = GetDC(pBox.hwnd)

    Do While (a <= Longueur)
        pBox.PSet (X, iHeight - Y - 1), RGB(Contenu(a + 2), Contenu(a + 1), Contenu(a))
        
        'SetPixel pHDC, X, iHeight - Y - 1, RGB(Contenu(a + 2), Contenu(a + 1), Contenu(a))
        X = X + 1
        If X = iWidth Then X = 0: Y = Y + 1

        a = a + 3
    Loop

    OuvrirBMP = True
End Function

Conclusion :


Je vous dirais bien joyeux noël, mais il reste encore 2 jours, alors il serait inapproprié de le dire.

A voir également

Ajouter un commentaire

Commentaires

cs_Unreal
Messages postés
89
Date d'inscription
vendredi 20 décembre 2002
Statut
Membre
Dernière intervention
26 mars 2006
-
Super source et bravo pour l'etude de fonctionnement du BMP ! Perso, moi, j'ai pas compri grand chose! mdr
bien jouer ;)
cs_Alain Proviste
Messages postés
908
Date d'inscription
jeudi 26 juillet 2001
Statut
Modérateur
Dernière intervention
1 février 2015
1 -
oui enfin wav et bdd c'est plus compliqué que du bitmap...
cs_max12
Messages postés
1491
Date d'inscription
dimanche 19 novembre 2000
Statut
Modérateur
Dernière intervention
7 juillet 2014
-
La source sur le WAV m'interesse, je vais aller voir ça. Pour la base de donnée, je connais des gens qui utilisait des TXT pour la construire (sans tableau ni rien). Ce sont des gens soient très vaillant, soient des génis ;)
cs_max12
Messages postés
1491
Date d'inscription
dimanche 19 novembre 2000
Statut
Modérateur
Dernière intervention
7 juillet 2014
-
ennixo> Je sais, mais l'optimisation à toujours une limite, quand elle est atteinte et bien ...

Et pour pset, il y avait la fonction SetPixel que j'utilisait avant qui elle va au moins 3 fois plus vite que PSet, mais je n'arrives plus à m'en servir, je sais pas s'il y a un truc que j'ai oublier ou c'est dû à WinXP ?

@+
cs_legion91
Messages postés
216
Date d'inscription
mercredi 5 février 2003
Statut
Membre
Dernière intervention
15 décembre 2010
-
Je trouve cette source trés interressante, surtout que les tableaux de valeurs servent aussi dans les fichiers Wav,mp3... et j'avais fait une source pour les base de donnée (simpliste mais que j'utilise maintenant tres souvent) utilisant justement les tableaux.

Ma source:
http://www.vbfrance.com/code.aspx?ID=25235

Et celle du format Wav:
http://www.vbfrance.com/code.aspx?ID=24461

J'espere que sa t'interressera.

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.