J'ai utilisé cette méthode pour redimensionner les images .JPG
téléchargées sur une largeur maximale, mais les images sont plus volumineuses en kb que la source. Qu'est-ce que je fais mal? Y a-t-il autre chose que je dois faire lorsque je sauvegarde la nouvelle image?Le redimensionnement de l'image entraîne une taille de fichier massivement plus grande que l'original C#
J'ai essayé toutes sortes de combinaisons de PixelFormat
, par ex. PixelFormat.Format16bppRgb555
Ex: image source est un .JPG
1900W, en essayant de redimensionner à 1200W ...
- fichier source est 563KB,
- fichier redimensionnée est 926KB ou plus, même
public static void ResizeToMaxWidth(string fileName, int maxWidth)
{
Image image = Image.FromFile(fileName);
if (image.Width > maxWidth)
{
double ratio = ((double)image.Width/(double)image.Height);
int newHeight = (int)Math.Round(Double.Parse((maxWidth/ratio).ToString()));
Bitmap resizedImage = new Bitmap(maxWidth, newHeight);
Graphics graphics = Graphics.FromImage(resizedImage);
graphics.SmoothingMode = System.Drawing.Drawing2D.SmoothingMode.HighQuality;
graphics.CompositingQuality = System.Drawing.Drawing2D.CompositingQuality.HighQuality;
graphics.InterpolationMode = System.Drawing.Drawing2D.InterpolationMode.High
Rectangle rectDestination = new Rectangle(0, 0, maxWidth, newHeight);
graphics.DrawImage(image, rectDestination, 0, 0, image.Width, image.Height, GraphicsUnit.Pixel);
graphics.Dispose();
image.Dispose();
resizedImage.Save(fileName);
resizedImage.Dispose();
}
image.Dispose();
}
Utilisez-vous des fichiers jpg? Parlez-vous de la taille du disque? C'est pour le jpg principalement décidé par le paramètre de qualité d'encodage. Vous devriez ajouter un codeur explicite à Cotrol! – TaW
J'ai modifié ma question pour refléter le fait que je télécharge principalement des jpgs. S'il vous plaît ajouter une réponse si vous en avez un merci! – Dave
La classe bitmap ne détecte pas le format de l'extension de fichier. Vous l'enregistrez probablement dans un format png avec une extension de fichier jpeg. Vous devez fournir le second paramètre à la méthode de sauvegarde. – john