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

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

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.