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 :

Récupération zones d'une image


Sujet :

VB.NET

  1. #1
    Nouveau Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2016
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Maine et Loire (Pays de la Loire)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mars 2016
    Messages : 6
    Points : 0
    Points
    0
    Par défaut Récupération zones d'une image
    Bonjour à tous.

    Je cherche à récupérer plusieurs zones dans une image, en rentrant les coordonnées de ses différentes zones, pour ensuite les afficher sur le côté les unes à côté des autres. J'ai trouvé comment extraire une partie d'image d'une picturebox pour l'afficher dans une autre mais je ne vois pas comment faire pour en afficher plusieurs.

    Merci d'avance.

  2. #2
    Expert confirmé
    Inscrit en
    Avril 2008
    Messages
    2 564
    Détails du profil
    Informations personnelles :
    Âge : 64

    Informations forums :
    Inscription : Avril 2008
    Messages : 2 564
    Points : 4 441
    Points
    4 441
    Par défaut
    bonjour
    c'est pas clair là !!!
    Formule comme ca c'est pas ...Un peu de code svp ....sinon tu n'auras de reponse!!!

  3. #3
    Nouveau Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2016
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Maine et Loire (Pays de la Loire)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mars 2016
    Messages : 6
    Points : 0
    Points
    0
    Par défaut
    Voila le code que j'ai récuperé :

    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
    Private Sub btnCopyPart_Click(sender As System.Object, e As System.EventArgs) Handles btnCopyPart.Click
     
        'Grab the content of the first PictureBox and save it as a bitmap
        Dim sourcebmp As New Bitmap(picImage.Image)
        '  Create an empty bitmap the size of the second PictureBox
        Dim destinationbmp As New Bitmap(picDestination.Width, picDestination.Height)
        ' Create a Graphics object for the destination
        Dim gr As Graphics = Graphics.FromImage(destinationbmp)
     
        ' Set the size of the area you want to copy
        Dim selectionrectangle As New Rectangle(140, 20, 270, 400)
        ' Set the size of the destination rectangle to match the size of the second PictureBox
        Dim destinationrectangle As New Rectangle(0, 0, picDestination.Width, picDestination.Height)
     
        ' Draw selected area on to the destination bitmap.
        gr.DrawImage(sourcebmp, destinationrectangle, selectionrectangle, GraphicsUnit.Pixel)
     
        ' Set the drawn destination bitmap as the image of the second PictureBox
        picDestination.Image = destinationbmp
     
      End Sub
    Source : http://vbcity.com/blogs/xtab/archive...box-image.aspx

    Maintenant comment faire pour pouvoir extraire plusieurs zones d'une même image?

  4. #4
    Expert confirmé
    Avatar de wallace1
    Homme Profil pro
    Administrateur systèmes
    Inscrit en
    Octobre 2008
    Messages
    1 966
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : Administrateur systèmes
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Octobre 2008
    Messages : 1 966
    Points : 4 005
    Points
    4 005
    Billets dans le blog
    7
    Par défaut
    Bonsoir,

    Ce n'est pourtant pas compliqué, avec un minimum de logique tu peux faire ce que tu veux puisque la source que tu as récupérés est largement commentée !

  5. #5
    Expert confirmé
    Inscrit en
    Avril 2008
    Messages
    2 564
    Détails du profil
    Informations personnelles :
    Âge : 64

    Informations forums :
    Inscription : Avril 2008
    Messages : 2 564
    Points : 4 441
    Points
    4 441
    Par défaut
    Re
    Tu veux rogner des parties de l'image source en les selectionnant (avec souris,je suppose) et faire un assemblage d'image dans une GrandImage....Cest faisable mais d'abord il faut resoudre un big,big probleme:

    1/ A chaque fois que tu selectionne une zone rectangulaire et tu l'as ajoute à ton Big Image comment qu'il fait lui le big image ,il se dilate !!!
    Comme un Bitmap n'est pas Elastoc (bande dessine ) il faut le "dilater" avant d'ajouter un bout de bitmap rogne (selection) et pour resoudre ce probleme epineux il faut ce qu'il faut :

    L'explication suivante s'entend pour un affichage vertical (l'horizontal etant peu usite et incommode):
    -stocker les selections dans un List(Of Bitmap) designe par RognageImages ...
    -recreer le GrandImage recipendiaire en calculant sa largeur Maximale à partir de RognageImages et en sommant les hauteurs des bitmaps "rognages" convenablement espaces (mettons 10 dans l'exemple ci-apres)....

    -dessiner dessus avec Graphics.FromImage(GrandImage)
    -afficher le GrandImage dans picDestination...

    2/Pour des raisons de precision et comme on travaile avec la selection souris il faut que les PicBoxes ait :
    - le SizeMode =PictureBoxSizeMode.AutoSize
    - Un Panel pour recevoir chaque picbox vu le SizeMode
    - AutoScoll = true pour chaque panel
    3/ Des handlers souris pour le picsource permettant la selection et au click droit la selection est affichee...

    ingredients du code exemple:
    -dropper 2 panels
    -dropper chaque picbox dans un panel
    code vb. exemple qui debite le pauvre pingouin en morceaux ( bon appetit ):
    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
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
     
     
    Public Class Form2
        Private RognageImages As New List(Of Bitmap)
        Private GrandImage As Bitmap = Nothing
        Public Sub New()
     
            ' Cet appel est requis par le concepteur.
            InitializeComponent()
     
            ' Ajoutez une initialisation quelconque après l'appel InitializeComponent().
            Panel1.AutoScroll = True
            Panel2.AutoScroll = True
     
            picSource.Location = New Point(0, 0)
            picSource.Size = New Size(20, 20)
            picSource.SizeMode = PictureBoxSizeMode.AutoSize
     
            picDestination.Location = New Point(0, 0)
            picDestination.Size = New Size(20, 20)
            picDestination.SizeMode = PictureBoxSizeMode.AutoSize
        End Sub
     
        Private Sub Form2_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
            picSource.Image = My.Resources.Penguins
     
        End Sub
        Private selRect As Rectangle = Rectangle.Empty
        Private startPoint As Point
        Private Sub picSource_MouseDown(ByVal sender As Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles picSource.MouseDown
            If e.Button = MouseButtons.Left Then
                startPoint = e.Location
                selRect.Location = startPoint
                picSource.Invalidate()
            End If
        End Sub
     
        Private Sub picSource_MouseMove(ByVal sender As Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles picSource.MouseMove
            If e.Button = MouseButtons.Left Then
     
                selRect.Width = e.X - startPoint.X
                selRect.Height = e.Y - startPoint.Y
                picSource.Invalidate()
            End If
        End Sub
     
        Private Sub picSource_MouseUp(ByVal sender As Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles picSource.MouseUp
            If e.Button = MouseButtons.Right Then
                selRect.Width = e.X - startPoint.X
                selRect.Height = e.Y - startPoint.Y
     
                picSource.Invalidate()
                PerformCopy()
                selRect = Rectangle.Empty
            End If
        End Sub
     
        Private Sub picSource_Paint(ByVal sender As Object, ByVal e As System.Windows.Forms.PaintEventArgs) Handles picSource.Paint
            Dim gr As Graphics = e.Graphics
            Using selectionPen As New Pen(Brushes.Red, 1.0)
                gr.DrawRectangle(selectionPen, selRect)
            End Using
        End Sub
        Private Sub PerformCopy()
     
            Dim sourcebmp As New Bitmap(picSource.Image)
     
            Dim destinationbmp As New Bitmap(selRect.Width, selRect.Height)
     
            Dim gr As Graphics = Graphics.FromImage(destinationbmp)
            Dim destinationrectangle As New Rectangle(0, 0,
                                                      selRect.Width,
                                                      selRect.Height)
     
            gr.DrawImage(sourcebmp, destinationrectangle,
                         selRect, GraphicsUnit.Pixel)
     
            'Assemblage 
     
            RognageImages.Add(destinationbmp)
            Dim largeur As Integer = RognageImages.Max(Function(o) o.Width)
            Dim hauteur As Integer = 0
            For Each item As Bitmap In RognageImages
                hauteur += item.Height
     
            Next
            GrandImage = New Bitmap(largeur, hauteur)
     
            Dim grfxBig As Graphics = Graphics.FromImage(GrandImage)
            Dim x, y As Integer
            x = 0 : y = 0
            For i As Integer = 0 To RognageImages.Count - 1
                grfxBig.DrawImage(RognageImages(i), x, y)
                y += 10 + RognageImages(i).Height
     
            Next
     
            ' Set the drawn "big" destination bitmap as the image of the second PictureBox
            picDestination.Image = GrandImage
        End Sub
    End Class
    bon code....

  6. #6
    Nouveau Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2016
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Maine et Loire (Pays de la Loire)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mars 2016
    Messages : 6
    Points : 0
    Points
    0
    Par défaut
    Merci pour le code mais j'obtiens une erreur:

    'Penguins' est un type dans 'Resources' et ne peut pas être utilisé en tant qu'expression.

    Ligne : picSource.Image = My.Resources.Penguins

    J'ai bien ajouté l'image dans les ressources pourtant...

  7. #7
    Expert confirmé
    Inscrit en
    Avril 2008
    Messages
    2 564
    Détails du profil
    Informations personnelles :
    Âge : 64

    Informations forums :
    Inscription : Avril 2008
    Messages : 2 564
    Points : 4 441
    Points
    4 441
    Par défaut
    re
    Comment as-tu fait ? c'est dans les proprieties du projet:
    Bah tu mets l'image que tu veux dans le designer et tu commentes cette ligne ...

  8. #8
    Nouveau Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2016
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Maine et Loire (Pays de la Loire)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mars 2016
    Messages : 6
    Points : 0
    Points
    0
    Par défaut
    Voilà c'est bon j'ai réussi à mettre l'image mais ça me donne un truc bizarre :

    Nom : Image111.jpg
Affichages : 398
Taille : 246,3 Ko

    Je ne peux rien sélectionner sur l'image...

  9. #9
    Expert confirmé
    Avatar de wallace1
    Homme Profil pro
    Administrateur systèmes
    Inscrit en
    Octobre 2008
    Messages
    1 966
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : Administrateur systèmes
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Octobre 2008
    Messages : 1 966
    Points : 4 005
    Points
    4 005
    Billets dans le blog
    7
    Par défaut
    @MABROUKI : Tu e lui rends pas service en proposant du code prêt à l'emploi ! Le symptôme est bien présent et cela devrait te mettre la puce à l'oreille :
    "J'ai copié/collé ton code mais ca ne marche pas......" !!!

    ......

  10. #10
    Nouveau Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2016
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Maine et Loire (Pays de la Loire)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mars 2016
    Messages : 6
    Points : 0
    Points
    0
    Par défaut
    Citation Envoyé par wallace1 Voir le message
    @MABROUKI : Tu e lui rends pas service en proposant du code prêt à l'emploi ! Le symptôme est bien présent et cela devrait te mettre la puce à l'oreille :
    "J'ai copié/collé ton code mais ca ne marche pas......" !!!

    ......
    Merci pour le soutien que tu apportes depuis le début

  11. #11
    Expert confirmé
    Avatar de wallace1
    Homme Profil pro
    Administrateur systèmes
    Inscrit en
    Octobre 2008
    Messages
    1 966
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : Administrateur systèmes
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Octobre 2008
    Messages : 1 966
    Points : 4 005
    Points
    4 005
    Billets dans le blog
    7
    Par défaut
    @OP : Il ne faut pas confondre :

    - aider, dépatouiller ou sortir qqun d'une mauvaise passe en s'appuyant sur un réel problème identifié par le demandeur (et pas au sens généralisé comme tu l'as si bien fais)!

    et

    - se tourner les pouces, attendre que des solutions tombent du ciel sans proposer une quelconque ébauche de ce qui a été tenté ou de ce qui a mené a l echec ...... !

    Programmer ce n est pas mettre bout a bout des copiés/collés de codes sources récupérés ca et là dans le but d obtenir un résultat favorable !
    C est avant tout acquerir certaines notions fondamentales (pour ne pas dire les bases puisqu'on apprends continuellement avec les evolutions du langage).
    Aiguiser son sens de la logique, savoir trouver une solution au travers des ressources (la demande d'aide a une tierce personne etant le dernier recours).
    Se cultiver sur le domaine qui fait l objet d un projet de developpement !

    a bon entendeur.

  12. #12
    Nouveau Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2016
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Maine et Loire (Pays de la Loire)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mars 2016
    Messages : 6
    Points : 0
    Points
    0
    Par défaut
    Je fais des tests, mais ça ne donne rien... Je n'ai jamais demandé à avoir le code tout prêt, j'ai repris ce que l'on m'a proposé mais ça ne donne pas le résultat que je souhaite. Je suis débutant et j'ai envie de comprendre comment ça fonctionne pour progresser, mais tes remarques ne servent à rien ici... Si tu ne veux pas m'aider ne le fais pas mais laisse au moins les autres me guider...

  13. #13
    Expert confirmé
    Avatar de wallace1
    Homme Profil pro
    Administrateur systèmes
    Inscrit en
    Octobre 2008
    Messages
    1 966
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : Administrateur systèmes
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Octobre 2008
    Messages : 1 966
    Points : 4 005
    Points
    4 005
    Billets dans le blog
    7
    Par défaut
    @OP : très bien je te laisse en te souhaitant bon courage pour la suite.....

  14. #14
    Expert confirmé
    Inscrit en
    Avril 2008
    Messages
    2 564
    Détails du profil
    Informations personnelles :
    Âge : 64

    Informations forums :
    Inscription : Avril 2008
    Messages : 2 564
    Points : 4 441
    Points
    4 441
    Par défaut
    re
    Comme dit par wallace1,si tu fais du copier-coller sans chercher à comprendre ce que fais le code ,tu n'iras pas bien loin...
    Le code donne fait un assemblage de bout d'images selectionnes dans un big image destination et fonctionne parfaitement ...
    Maintenant la FAQ du forum et ses tutos sur le VB.Net est ton amie...

Discussions similaires

  1. zoomer dans une zone d'une image
    Par sanatou dans le forum Général JavaScript
    Réponses: 3
    Dernier message: 21/02/2008, 17h14
  2. Dupliquer une zone d'une image
    Par too_Slow_ dans le forum Flash
    Réponses: 1
    Dernier message: 24/02/2007, 08h54
  3. Réponses: 10
    Dernier message: 24/05/2006, 17h28
  4. [D6] Algo de détection de zones dans une image
    Par DMO dans le forum Langage
    Réponses: 4
    Dernier message: 25/11/2005, 15h15
  5. [MFC] Surlignage d'une zone d'une image
    Par eyghon dans le forum MFC
    Réponses: 6
    Dernier message: 06/04/2005, 19h12

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