Rotation d'image sans perte de qualité
Bonjour,
J'essaye de faire une galerie d'image en ligne et pour ce faire j'ai ajouté une fonction me permettant de faire des rotations de 90° sur mes images uploadées
pour ce faire j'utilise ce code :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24
|
public static byte[] RotateImage90(byte[] image)
{
using (MemoryStream ms = new MemoryStream(image))
{
Image img = Image.FromStream(ms);
SD.Imaging.Encoder enc = SD.Imaging.Encoder.Transformation;
EncoderParameters encParms = new EncoderParameters(2);
ImageCodecInfo codecInfo = FindEncoder(ImageFormat.Jpeg);
encParms.Param[1] = new EncoderParameter(System.Drawing.Imaging.Encoder.Quality, 100L);
encParms.Param[0] = new EncoderParameter(enc, (long)EncoderValue.TransformRotate90);
using (MemoryStream msImage = new MemoryStream())
{
// Save to memory using the Jpeg format
img.Save(msImage, codecInfo, encParms);
img.Dispose();
// read to end
return msImage.GetBuffer();
}
}
} |
le problème c'est qu'a chaque fois que je fait une rotation mon image perd de sa qualité et après quelques rotations celle-ci ne ressemble a grand chose...
Est il possible de re-sauver mon image sans la recompresser et en évitant de passer par le format BMP qui est assez lourd...
Merci d'avance,
Gunth