Bonjour,
je cherche à enregistrer une image au format jpeg, à partir d'un fichier original que je pivote de 270°, (soit 90° antihoraire), sous VB.net 2010.
Pour ce faire, j'utilise les classes GDI+ du Framework, à savoir les classes de System.Drawing, objet Bitmap et méthode Save.
Mon soucis est que le format de couleur original n'est pas conservé.
En effet, l'image d'origine est codé en YCbCr 4:4:4, mais après rotation et sauvegarde dans un autre fichier, le format de couleurs devient YCbCr 4:2:0...
Ce qui est ennuyeux pour le décompresseur hardware que nous utilisons...
Je remarque également, que la compression est plus forte que celle du fichier original, j'arrive cependant à l'améliorer en utilisant le paramètre Quality de l'encoder...
Extrait du Code utilisé :
J'avais d'abord utilisé la méthode image.RotateFlip puis Save au format Jpeg, mais le problème reste le même.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12 image = New System.Drawing.Bitmap("FirstImage.jpeg") myImageCodecInfo = GetEncoderInfo(System.Drawing.Imaging.ImageFormat.Jpeg) myEncoder = System.Drawing.Imaging.Encoder.Transformation myEncoderParameters = New System.Drawing.Imaging.EncoderParameters(1) 'Transformation myEncoderParameter = New System.Drawing.Imaging.EncoderParameter(myEncoder, Fix(System.Drawing.Imaging.EncoderValue.TransformRotate270)) myEncoderParameters.Param(0) = myEncoderParameter image.Save("SecondImage.jpg", myImageCodecInfo, myEncoderParameters)
Comment puis-je faire ma rotation en conservant tous les paramètres de compression et de format de couleur du fichier original?
Merci d'avance pour votre aide.
Eric
Partager