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 :

Sauver une portion d'image


Sujet :

VB.NET

  1. #1
    Membre régulier
    Homme Profil pro
    Scientist
    Inscrit en
    Mai 2013
    Messages
    110
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Scientist
    Secteur : Industrie Pharmaceutique

    Informations forums :
    Inscription : Mai 2013
    Messages : 110
    Points : 87
    Points
    87
    Par défaut Sauver une portion d'image
    Bonsoir,

    Est-il possible de sauver une portion d'image sans passer par une PictureBox?

    J'essaye de m'expliquer avec un exemple:
    - Une image 6000x4000px
    - Un rectangle virtuel avec x=300, y=200, width=600 et Height=400
    - On sauve l'image => Nouvelle image 600x400px, demarrant aux coordonnees (300,200) de l'image originale

    Je pensais utiliser un MemoryStream et creer une fonction, mais je ne suis pas sur d'etre sur la bonne voie. Un peu comme ci-dessous, meme s'il y a des erreurs a corriger.
    Est-ce-que, au moins, c'est la bonne facon de proceder? Ou avez-vous une meilleure facon de faire?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
            Dim newImage As Image
            Dim memStream As MemoryStream = New MemoryStream
            newImage = ResizeImage(FileName, memStream, x, y, Width, Height)
            newImage.Save(memStream, ImageFormat.Jpeg)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
        Public Function ResizeImage(ByVal ImagePath As String, ByVal SavePath As Stream, ByVal x As Integer, ByVal y As Integer, ByVal w As Integer, ByVal h As Integer) As Image
            ' http://www.vbforums.com/showthread.php?550637-Reduce-file-size-of-images-(bmp-s-jpg-s-)
            Dim bm As New Bitmap(ImagePath)
            ' Declaration de variables x, y, w, h
            Dim thumb As New Bitmap(x, y, w, h)
            Using g As Graphics = Graphics.FromImage(thumb)
                g.InterpolationMode = Drawing2D.InterpolationMode.HighQualityBicubic
                g.DrawImage(bm, New Rectangle(0, 0, w, h), New Rectangle(0, 0, bm.Width, bm.Height), GraphicsUnit.Pixel)
                thumb.Save(SavePath, System.Drawing.Imaging.ImageFormat.Jpeg)
            End Using
            Return thumb
        End Function
    Merci,
    A+
    JLuc01

  2. #2
    Modérateur
    Avatar de Sankasssss
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Novembre 2006
    Messages
    1 842
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Novembre 2006
    Messages : 1 842
    Points : 4 232
    Points
    4 232
    Par défaut
    Hello,

    Voici le code trouvé sur un autre site (en C# mais facilement transposable en VB.Net) :
    Code C# : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    // Create a Bitmap object from a file.
    Bitmap myBitmap = new Bitmap("Grapes.jpg");
     
    // Clone a portion of the Bitmap object.
    Rectangle cloneRect = new Rectangle(0, 0, 100, 100);
    System.Drawing.Imaging.PixelFormat format =  myBitmap.PixelFormat;
    Bitmap cloneBitmap = myBitmap.Clone(cloneRect, format);
     
    // Draw the cloned portion of the Bitmap object.
    e.Graphics.DrawImage(cloneBitmap, 0, 0);

  3. #3
    Membre régulier
    Homme Profil pro
    Scientist
    Inscrit en
    Mai 2013
    Messages
    110
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Scientist
    Secteur : Industrie Pharmaceutique

    Informations forums :
    Inscription : Mai 2013
    Messages : 110
    Points : 87
    Points
    87
    Par défaut
    Merci Sankasssss, ca parait bien plus simple que ce que je pensais faire.
    J'essayerais ca ce soir (Je n'ai pas VBNet ou je travaille) et je vous tiendrais au courant.

    En fait, on clone une partie de l'image basee sur un Rectangle.

    En VBNet:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    Dim myBitmap As Bitmap = New Bitmap("Grapes.jpg")
    Dim cloneRect As Rectangle = New Rectangle(0, 0, 100, 100)
    Dim format As System.Drawing.Imaging.PixelFormat = myBitmap.PixelFormat
    Dim cloneBitmap As Bitmap = myBitmap.Clone(cloneRect, format)
    ' Draw the cloned portion of the Bitmap object.
    e.Graphics.DrawImage(cloneBitmap, 0, 0)
    A+
    JLuc01

  4. #4
    Membre régulier
    Homme Profil pro
    Scientist
    Inscrit en
    Mai 2013
    Messages
    110
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Scientist
    Secteur : Industrie Pharmaceutique

    Informations forums :
    Inscription : Mai 2013
    Messages : 110
    Points : 87
    Points
    87
    Par défaut
    Super, ca marche impeccable.
    Bon comme je voulais le sauver, j'ai remplacer la derniere ligne par:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    cloneBitmap.Save("c:\bitmaps\test.jpg", System.Drawing.Imaging.ImageFormat.Jpeg)
    Merci encore.
    JLuc01

  5. #5
    Modérateur
    Avatar de Sankasssss
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Novembre 2006
    Messages
    1 842
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Novembre 2006
    Messages : 1 842
    Points : 4 232
    Points
    4 232
    Par défaut
    Avec plaisir.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Dessiner une portion d'image dans une autre image
    Par Harry_polin dans le forum Windows Presentation Foundation
    Réponses: 4
    Dernier message: 24/11/2009, 13h19
  2. Charger une portion d'image
    Par eddie5150 dans le forum Java ME
    Réponses: 4
    Dernier message: 09/06/2008, 13h29
  3. [C#][GDI+]Capture d'une portion d'image
    Par WOLO Laurent dans le forum Windows Forms
    Réponses: 1
    Dernier message: 22/11/2007, 08h29
  4. [Java2D]Dessiner une portion d'image
    Par Guybrush dans le forum 2D
    Réponses: 4
    Dernier message: 27/03/2007, 22h58
  5. [winform][dotnet] afficher une portion d'image zoomée
    Par maxdwarf dans le forum Windows Forms
    Réponses: 1
    Dernier message: 01/02/2007, 17h13

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