c#画像生成サムネイルを実現するコード

1389 ワード

コードを書く過程で重要なコードセグメントを1回バックアップし、以下の資料はc#が画像生成サムネイルを実現するコードについてです.
private void MakeThumbnail(string sourcePath, string newPath, int width, int height)
{
    System.Drawing.Image ig = System.Drawing.Image.FromFile(sourcePath);
    int towidth = width;
    int toheight = height;
    int x = 0;
    int y = 0;
    int ow = ig.Width;
    int oh = ig.Height;
    if ((double)ig.Width / (double)ig.Height > (double)towidth / (double)toheight)
    {
        oh = ig.Height;
        y = 0;
        x = (ig.Width - ow) / 2;

    }
    else
    {
        ow = ig.Width;
        x = 0;
        y = (ig.Height - oh) / 2;
    }
    System.Drawing.Image bitmap = new System.Drawing.Bitmap(towidth, toheight);
    System.Drawing.Graphics g = System.Drawing.Graphics.FromImage(bitmap);
    g.InterpolationMode = System.Drawing.Drawing2D.InterpolationMode.High;
    g.SmoothingMode = System.Drawing.Drawing2D.SmoothingMode.HighQuality;
    g.Clear(System.Drawing.Color.Transparent);
    g.DrawImage(ig, new System.Drawing.Rectangle(0, 0, towidth, toheight), new System.Drawing.Rectangle(x, y, ow, oh), System.Drawing.GraphicsUnit.Pixel);
    try
    {
        bitmap.Save(newPath, System.Drawing.Imaging.ImageFormat.Jpeg);
    }
    catch (Exception ex)
    {
        throw ex;
    }
    finally
    {
        ig.Dispose();
        bitmap.Dispose();
        g.Dispose();
    }

}