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 :

Sauvegarde une image jpeg avec la qualité


Sujet :

VB.NET

  1. #1
    Membre actif
    Inscrit en
    Juin 2006
    Messages
    584
    Détails du profil
    Informations forums :
    Inscription : Juin 2006
    Messages : 584
    Points : 235
    Points
    235
    Par défaut Sauvegarde une image jpeg avec la qualité
    Bonjour,

    J'utilise actuellement
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    PictureBox1.Image.Save"c:/ok.jpeg",System.Drawing.Imaging.ImageFormat.jpeg)
    pour sauvegarder une image et ca marche bien.
    Mais j'aimerai savoir si il est possible de définir la qualité du jpeg qui va être enregistrer.
    Si oui comment puis-je faire?
    Merci d'avance

  2. #2
    Membre à l'essai
    Inscrit en
    Août 2002
    Messages
    10
    Détails du profil
    Informations personnelles :
    Âge : 50

    Informations forums :
    Inscription : Août 2002
    Messages : 10
    Points : 12
    Points
    12
    Par défaut
    Bonjour

    Voici un exemple de code que j'avais créé il y a quelque temps (quelques années en fait puisque c'était en 2003) en VS.Net 2003.

    Quelques remarques :
    - j'avais créer une fonction "CréerNomFichier" (pas incluse ici) qui permettait en cas d'existence du fichier final, de rajouter un numéro d'ordre à ce dernier, ou alors de le remplacer le cas échéant



    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
     
    Imports System.Drawing
     
    (...)
     
            Private Function GetEncoderInfo(ByVal sMimeType As String) As Imaging.ImageCodecInfo
     
                Dim _Nb As Int32    'Compteur d'éléments du codec
     
                Dim _Codecs() As Imaging.ImageCodecInfo = Imaging.ImageCodecInfo.GetImageEncoders
     
                For _Nb = 0 To _Codecs.GetUpperBound(0)
                    If _Codecs(_Nb).MimeType = sMimeType Then
                        'On a trouvé le type recherché, sortie
                        Return _Codecs(_Nb)
                        Exit Function
                    End If
                Next
     
            End Function
     
            Public Function SauverImage(ByVal B As Bitmap, _
                ByVal NomFichier As String, _
                ByVal FormatSortie As Imaging.ImageFormat, _
                Optional ByVal Remplacer As Boolean = False, _
                Optional ByVal Qualite As Int32 = 50) As Boolean
     
                'Recherche du nom de fichier adapté
                Dim _NomFinal As String = CréerNomFichier(NomFichier, Remplacer)
                Dim _Qualité As Int32 = Qualite 'la qualité doit être passée ByRef sinon ça ne marche pas
     
                Try
                    If FormatSortie Is Imaging.ImageFormat.Jpeg Then
                        '----- Cas spécifique du JPEG
                        'Définition des encodeurs pour la gestion du niveau de qualité
                        Dim MyJPEGEncoder As Imaging.ImageCodecInfo = GetEncoderInfo("image/jpeg")    'Lecture des codecs JPEG
                        Dim MyQualityEncoder As Imaging.Encoder = Imaging.Encoder.Quality             'Spécification de la qualité
                        Dim MyParamEncoder As Imaging.EncoderParameter = _
                            New Imaging.EncoderParameter(MyQualityEncoder, _Qualité)                  'Qualité choisie
                        Dim MyParamsEncoder As Imaging.EncoderParameters = New Imaging.EncoderParameters(1)
                        MyParamsEncoder.Param(0) = MyParamEncoder
     
                        'Création du bitmap en prenant en compte ces éléments
                        Dim oB As New Bitmap(B)
                        oB.Save(_NomFinal, MyJPEGEncoder, MyParamsEncoder)
     
                        'Libération des ressources
                        oB.Dispose()
                        MyParamEncoder.Dispose()
                        MyParamsEncoder.Dispose()
     
                    Else
                        '----- Autres formats
                        Dim oB As New Bitmap(B)
                        oB.Save(_NomFinal, FormatSortie)
                        oB.Dispose()
                    End If
                    'Opération réussie
                    Return True
                Catch
                    'Erreur, retour négatif
                    Try
                        'On efface l'éventuel fichier vide généré
                        File.Delete(_NomFinal)
                    Catch
                    End Try
                    Return False
                End Try
     
                B.Dispose()
     
            End Function

    Bon y'a peut-être mieux désormais, mais ça marchait à l'époque

Discussions similaires

  1. Sauvegarder une image cairo avec gtk
    Par dongonis38 dans le forum GTK+ avec C & C++
    Réponses: 5
    Dernier message: 07/10/2010, 16h01
  2. sauvegarder une image traiter avec flash
    Par dawla123 dans le forum ActionScript 3
    Réponses: 3
    Dernier message: 20/05/2008, 11h21
  3. Afficher une image JPEG avec le composant TJPEGImage
    Par BigMike dans le forum C++Builder
    Réponses: 4
    Dernier message: 13/07/2006, 15h21
  4. Sauvegarde d'une image jpeg modifiée
    Par tomfoot dans le forum Composants VCL
    Réponses: 1
    Dernier message: 05/04/2006, 16h02
  5. Sauvegarder une image (.GIF/.JPG) avec CppWebBrowser
    Par Argol_Medusa dans le forum C++Builder
    Réponses: 12
    Dernier message: 12/12/2005, 11h27

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