Extraire bitmap à partir d'un XML

Signaler
Messages postés
43
Date d'inscription
jeudi 7 août 2003
Statut
Membre
Dernière intervention
12 mars 2013
-
Messages postés
43
Date d'inscription
jeudi 7 août 2003
Statut
Membre
Dernière intervention
12 mars 2013
-
Bonjour, je débute avec VB.net (VS 2010). Ce que je voudrais faire, c'est d'extraire des partie d'images à partir d'un fichier bitmap (bmp qui contient des zones d'images) et d'un fichier XML qui contient les différentes zones d'images du fichier bitmap.
Mon but est de réaliser des skin personnalisable sur les boutons à partir d'un fichier bmp unique et d'un fichier xml.
Exemple : Un fichier bmp contient 3 images les unes contre les autres et un fichier xml qui permet de définir la zone pour chaque image du fichier bmp.
Je voudrais lire ce fichier xml et d'extraire les 3 images du fichier bmp afin de les afficher dans une picturebox pour chaque image.
Excusez moi si je ne suis pas très clair, mais je n'arrive pas à trouver la solution. Google (qui est toujours mon ami) ne m'aide pas beaucoup. Merci de me donner un petit coups de pouce pour ce petit projet.

Dès que j'aurai un début de source, j'en ferai un petit tuto.

Merci.

5 réponses


Bonjour,

Tu dois passer par un encodage Base64String pour stocker ou lire tes données depuis un XML. Tout cela est disponible au sein de la classe Convert.

Voir Convert.FromBase64String(chaine) et Convert.ToBase64String(donnees)
Messages postés
43
Date d'inscription
jeudi 7 août 2003
Statut
Membre
Dernière intervention
12 mars 2013

Là ce que tu me dis Banana c'est encoder/décoder un fichier binaire.
En fait, je me suis peut-être mal exprimé, mais je voudrais charger une image dans une picturebox à partir d'un fichier xml. Fichier xml qui contient plusieurs image dans un fichier bitmap. Ce fichier bitmap contient plusieurs image coller les unes des autres.
Messages postés
43
Date d'inscription
jeudi 7 août 2003
Statut
Membre
Dernière intervention
12 mars 2013

Petite démonstration :

Contenu du fichier xml :

c:\bitmap.bmp
zone(x1,y1,x2,y2)
zone(x1,y1,x2,y2)
zone(x1,y1,x2,y2)


contenu du fichier bmp :

image1,image2,image3 (3 images collées et délimitées grâce au fichier xml)


Je voudrais charger ces 3 images dans 3 picturebox à partir du fichier xml.

Tu peux utiliser la serialization.
Voici un exemple adapté à ton cas à tester dans un projet vierge :
Public Class Form1

    Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
        Dim b As New Bitmap(100, 100)
        'dessiner ici quelque chose ou récupérer depuis un picturebox par exemple
        b.Save("monbitmap.bmp", Imaging.ImageFormat.Bmp)
        Dim MonObjet As New MesZones
        MonObjet.ImagePath = "monbitmap.bmp"
        MonObjet.Add(New Rectangle(0, 0, 50, 50))
        MonObjet.Add(New Rectangle(50, 0, 50, 50))
        MonObjet.Add(New Rectangle(0, 50, 50, 50))
        MonObjet.Add(New Rectangle(50, 50, 50, 50))
        'serialisation
        Using writer As New IO.StreamWriter("monxml.xml")
            Dim ser As New Xml.Serialization.XmlSerializer(GetType(MesZones))
            ser.Serialize(writer, MonObjet)
        End Using
    End Sub

    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
        'désérialisation
        Dim MonObjet As New MesZones
        Using reader As New IO.StreamReader("monxml.xml")
            Dim ser As New Xml.Serialization.XmlSerializer(GetType(MesZones))
            MonObjet = CType(ser.Deserialize(reader), MesZones)
        End Using
        'monobjet contient tous tes rectangles et le path de ton image
    End Sub
End Class


Public Class MesZones
    Public Zones As New List(Of Rectangle)
    Public ImagePath As String
    Sub New()
    End Sub
    Sub Add(ByVal rect As Rectangle)
        Zones.Add(rect)
    End Sub
End Class
Messages postés
43
Date d'inscription
jeudi 7 août 2003
Statut
Membre
Dernière intervention
12 mars 2013

Super Banana pour la réponse rapide. je test ça ce soir. Merci.