Bonjour,
J'ai un petit problème "pratique" que je n'arrive pas à résoudre (malgré mes recherches sur le net).
Pour simplifier:
J'affiche une image dans une PictureBox et cherche à modifier son taux de compression afin de diminuer la taille du fichier.
N'ayant pas trouvé d'autre moyen, je teste divers taux afin de voir le résultat qui me convient le mieux (équilibre qualité image/taille de fichier).
Actuellement, je prends le chemin "long" (à mon avis) :
Question :
Plutôt que de lire le fichier image par le "FileSream" pour pouvoir charger la "BitmapFrame" dans le "JpgEncoder", ne peut-on directement partir de l'image qui est affichée dans la PictureBox ?
Cela éviterait une relecture du fichier image "Test.jpg" et serait sans doute plus rapide.
Quelqu'un sait-il comment faire ?
J'ai essayé pas mal de "machins" mais je n'arrive pas à récupérer les infos de "BitmapFrame" nécessaires au "JpgEncoder".
Merci à Tou(te)s d'avance
Dom
J'ai un petit problème "pratique" que je n'arrive pas à résoudre (malgré mes recherches sur le net).
Pour simplifier:
J'affiche une image dans une PictureBox et cherche à modifier son taux de compression afin de diminuer la taille du fichier.
N'ayant pas trouvé d'autre moyen, je teste divers taux afin de voir le résultat qui me convient le mieux (équilibre qualité image/taille de fichier).
Actuellement, je prends le chemin "long" (à mon avis) :
Code:
Dim imgStreamRead As Stream = New FileStream("Test.jpg", FileMode.Open, FileAccess.Read, FileShare.Read)
Dim jpgEncoder As New JpegBitmapEncoder
jpgEncoder.Frames.Add(BitmapFrame.Create(imgStreamRead))
Dim imgStreamWrite As Stream = New FileStream("Test_W.jpg", FileMode.OpenOrCreate, FileAccess.Write, FileShare.ReadWrite)
jpgEncoder.QualityLevel = 50 ' ---- exemple ----
jpgEncoder.Save(imgStreamWrite)
TextBox1.Text = (imgStreamWrite.Length \ 1024).ToString ' ---- affichage de la taille du fichier résultat ---------
imgStreamWrite.Close()
imgStreamRead.Close()
My.Computer.FileSystem.DeleteFile("Test_W.jpg")
Plutôt que de lire le fichier image par le "FileSream" pour pouvoir charger la "BitmapFrame" dans le "JpgEncoder", ne peut-on directement partir de l'image qui est affichée dans la PictureBox ?
Cela éviterait une relecture du fichier image "Test.jpg" et serait sans doute plus rapide.
Quelqu'un sait-il comment faire ?
J'ai essayé pas mal de "machins" mais je n'arrive pas à récupérer les infos de "BitmapFrame" nécessaires au "JpgEncoder".
Merci à Tou(te)s d'avance
Dom