Redimension d'image en c#

Description

Ce programme parcours le dossier dans lequel il se trouve et redimensionne les images

L'utilisateur saisit le coefficient par lequel la taille de l'image sera divisé.

Le code est très commenté et se veut simpliste.

(Dans le zip : un batch pour compiler, la source, l'executable, deux images)

Source / Exemple :


using System;
using System.Windows.Forms; //Application
using System.IO; //Directory et Path
using System.Drawing;
using System.Drawing.Drawing2D;
using System.Drawing.Imaging;

public class resize
{
    public static void Main()
    {
        //Ce programme redimensionne toutes les images du dossier
        //This program resize all pictures in the directory

        //csc resize.cs and GO !

        //Have fun ! // http://vince.monkeyz.eu

        int coeff;

        Console.Write("Diviser la taille par : ");
        string res = Console.ReadLine();

        try
        {
            coeff = int.Parse(res); //conversion en entier
        }
        catch
        {
            coeff = 2; //valeur par défaut
        }

        string tab_ext = ".jpg.jpeg.png.bmp.gif.tiff"; //Extensions authorisée
        string[] files = Directory.GetFiles(Application.StartupPath); //Liste des fichiers du dossier

        foreach (string file in files)
        { //file = 1 image

            string ext = Path.GetExtension(file).ToLower();

            if (tab_ext.Contains(ext)) //extension valide ?
                Resize(file, coeff, ext);
            else
                Console.WriteLine(file + " : fichier invalide");
            
        }

        Console.Write("Done");
        Console.ReadKey();
    }

    public static void Resize(string name, int coeff, string ext)
    {
        //Ouverture de l'ancienne image
        FileStream fs = new FileStream(name, FileMode.Open, FileAccess.Read);
        Bitmap old = (Bitmap)Bitmap.FromStream(fs);
        fs.Close();

        int destWidth = old.Width / coeff;
        int destHeight = old.Height / coeff;

       Bitmap img = new Bitmap(destWidth, destHeight, old.PixelFormat); //Nouvelle image, nouvelle largeur/hauter, ancien PixelFormat

        using (Graphics g = Graphics.FromImage((Image)img))
        {
            g.InterpolationMode = InterpolationMode.HighQualityBicubic;
            g.DrawImage(old, 0, 0, destWidth, destHeight);
        } //nota : g.Dispose();

        string path = Application.StartupPath + "\\mini-" + Path.GetFileName(name); // save path (mini-...jpg)

        ImageFormat imgfmt;

        if (ext == ".bmp")
            imgfmt = ImageFormat.Bmp;
        else if (ext == ".gif")
            imgfmt = ImageFormat.Gif;
        else if (ext == ".png")
            imgfmt = ImageFormat.Png;
        else if (ext == ".tiff")
            imgfmt = ImageFormat.Tiff;
        else
            imgfmt = ImageFormat.Jpeg;//Defaut

       img.Save(path, imgfmt);
    }
}

Conclusion :


En modifiant un petit peu le code, il est possible de changer la qualité, de convertir, définir une taille fixe,...

Un problème, une remarque,... n'hésitez pas à commenter

Codes Sources

A voir également

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.