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.NET Discussion :

Découper une image en plusieurs parties puis la ré assembler


Sujet :

VB.NET

  1. #1
    Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Janvier 2014
    Messages
    55
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 29
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Janvier 2014
    Messages : 55
    Points : 41
    Points
    41
    Par défaut Découper une image en plusieurs parties puis la ré assembler
    Bonsoir à tous, depuis plusieurs jours je souhaite essayer de "séparer" une image en plusieurs parties puis les ré assembler pour reformer l'image et l’afficher à nouveau pour vérifier que l'image est identique.

    Mon problème étant que je ne sais pas de quelle manière procéder, je me suis fait deux fonctions de base :
    - une pour convertir l'image originale en memorystream
    - une seconde pour récupérer l'image à partir du memorystream

    - mon premier essai a été de mettre une image dans un picturebox, de le convertir puis de le récupérer et enfin l'afficher pour vérifier que c'est bon.
    Jusque la pas de soucis ça fonctionne

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
     
     Function MemoryStreamToBitmap(ByVal ms As MemoryStream)
            Dim Bitmap As Bitmap = Image.FromStream(ms)
            Return Bitmap
        End Function
     
        Function BitmapToMemoryStream(ByVal Bitmap As Bitmap)
            Dim ms As New MemoryStream
            Bitmap.Save(ms, Bitmap.RawFormat)
            Return ms
        End Function
     
     
     
    Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click
            Dim Stream As MemoryStream = BitmapToMemoryStream(PictureBox1.Image)
            Dim Bitmap As Bitmap = MemoryStreamToBitmap(Stream)
     
            PictureBox2.Image = Bitmap
             End Sub
    Ce que j'aimerais faire maintenant, c'est "découper" le memorystream de l'image originale en plusieurs parties, par exemple en 10, puis ré assembler ces 10 parties pour retrouver limage.
    Je ne sais pas trop comment m'y prendre j'ai commencé le squelette :





    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
     
       Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click
            Dim Stream As MemoryStream = BitmapToMemoryStream(PictureBox1.Image)
     
            '--
            Dim SizeSplitter As Double = PictureSize / 10
            Dim NewBitmap As MemoryStream
     
            For i = 1 To 10
                ' Ajouter la quantité SizeSplitter à NewBitmap
            Next
            ' NewBitmap est égal à Stream
            '--
            Dim Bitmap As Bitmap = MemoryStreamToBitmap(NewBitmap)
            PictureBox2.Image = Bitmap
             End Sub
    Je ne sais pas comment m'y prendre pouvez-vous m'expliquer svp ?

    Bonne soirée à tous

  2. #2
    Membre expérimenté
    Avatar de charouel
    Homme Profil pro
    Freelance
    Inscrit en
    Mars 2009
    Messages
    618
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Freelance
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2009
    Messages : 618
    Points : 1 454
    Points
    1 454
    Billets dans le blog
    9
    Par défaut
    tu a une taille dans le memory stream => tu le devise sur 10 puis tu fait un array ou une liste et tu met chaque partie dans une case !!
    mais pour quoi faire?

  3. #3
    Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Janvier 2014
    Messages
    55
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 29
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Janvier 2014
    Messages : 55
    Points : 41
    Points
    41
    Par défaut
    Il n'y a pas de but précis j'apprends le VB.NET et souhaite m'imposer des entraînements.
    Je chercher donc a découper un memorystream et copier chacune des parties dans un memorystream pour reassembler limage originale.
    Merci de m'aiguillier sur la methode du array ?

  4. #4
    Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Janvier 2014
    Messages
    55
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 29
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Janvier 2014
    Messages : 55
    Points : 41
    Points
    41
    Par défaut
    Puisque je ne connais pas la méthode du memorystream j'ai triché en passant par un traitement sous form de string

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
      Function MemoryStreamToBitmap(ByVal ms As MemoryStream)
            Dim Bitmap As Bitmap = Image.FromStream(ms)
            Return Bitmap
        End Function
     
        Function BitmapToMemoryStream(ByVal Bitmap As Bitmap)
            Dim ms As New MemoryStream
            Bitmap.Save(ms, Bitmap.RawFormat)
            Return ms
        End Function
     
        Private Sub Button3_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button3.Click
            Dim Stream As MemoryStream = BitmapToMemoryStream(PictureBox1.Image)
            Dim OriginalString As String = Convert.ToBase64String(Stream.ToArray)
     
            Dim split As Double = OriginalString.Length / 10
            Dim NewString As String = Nothing
            Dim part As String
            For i = 1 To 10
                If i = 1 Then
                    part = SearchByIndex(OriginalString, 0, split)
                    NewString += part
                ElseIf i = 10 Then
                    part = SearchByIndex(OriginalString, NewString.Length, OriginalString.Length - NewString.Length)
                    NewString += part
                Else
                    part = SearchByIndex(OriginalString, NewString.Length, split)
                    NewString += part
                End If
            Next
     
            Dim bytes() As Byte = Convert.FromBase64String(NewString)
            Dim MS As New System.IO.MemoryStream(bytes)
            PictureBox2.Image = MemoryStreamToBitmap(MS)
     
     
        End Sub
     
        Function SearchByIndex(ByVal AllString As String, ByVal StartIndex As Integer, ByVal Length As Integer)
            Dim resultat As String = AllString.Substring(StartIndex, Length)
            Return resultat
        End Function
    ça fonctionne mais certaines images ont des beugs d'affichage, j'aimerais donc maintenant le faire d'une manière plus propre sans passer par les string, pouvez-vous me montrer un exemple ou m'expliquer comment faire ?
    Bonne soirée à tous

Discussions similaires

  1. [Débutant] découper une image pour faire plusieurs "capteurs"
    Par vanilou dans le forum Interfaces Graphiques
    Réponses: 7
    Dernier message: 06/07/2012, 14h35
  2. [Video] Découper une vidéo en plusieurs parties
    Par chris223 dans le forum Multimédia
    Réponses: 1
    Dernier message: 16/06/2008, 17h38
  3. Réponses: 15
    Dernier message: 30/04/2006, 00h37
  4. Réponses: 1
    Dernier message: 10/12/2005, 00h45
  5. découper une image
    Par poussinphp dans le forum Langage
    Réponses: 5
    Dernier message: 15/09/2005, 14h08

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