zoukankan      html  css  js  c++  java
  • 生成缩略图(改变图片尺寸)方法

    public static void MakeThumbnail(string originalImagePath, string thumbnailPath, int width, int height, string mode)
    {
    System.Drawing.Image originalImage = System.Drawing.Image.FromFile(originalImagePath);

    int towidth = width;
    int toheight = height;

    int x = 0;
    int y = 0;
    int ow = originalImage.Width;
    int oh = originalImage.Height;

    switch (mode)
    {
    case "HW"://指定高宽缩放(可能变形)
    break;
    case "W"://指定宽,高按比例
    toheight = originalImage.Height * width / originalImage.Width;
    break;
    case "H"://指定高,宽按比例
    towidth = originalImage.Width * height / originalImage.Height;
    break;
    case "Cut"://指定高宽裁减(不变形)
    if ((double)originalImage.Width / (double)originalImage.Height > (double)towidth / (double)toheight)
    {
    oh = originalImage.Height;
    ow = originalImage.Height * towidth / toheight;
    y = 0;
    x = (originalImage.Width - ow) / 2;
    }
    else
    {
    ow = originalImage.Width;
    oh = originalImage.Width * height / towidth;
    x = 0;
    y = (originalImage.Height - oh) / 2;
    }
    break;
    default:
    break;
    }

    //新建一个bmp图片
    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(originalImage, new System.Drawing.Rectangle(0, 0, towidth, toheight),
    new System.Drawing.Rectangle(x, y, ow, oh),
    System.Drawing.GraphicsUnit.Pixel);


    //以jpg格式保存缩略图
    bitmap.Save(thumbnailPath, System.Drawing.Imaging.ImageFormat.Jpeg);

    originalImage.Dispose();
    bitmap.Dispose();
    g.Dispose();

    }

  • 相关阅读:
    vue项目引入外部js文件方法
    Spring-data-jpa的简单使用
    mybatisPlus生成项目
    配置 swagger2
    MybatisGenerator生成项目的使用
    小程序如何避免连续点击导致多次请求的问题
    微信小程序设置Map组件全屏显示
    cgi.FieldStorage()方法:获取表单内容
    <a href...></a>超链接
    <input type="submit" value="a1" name="a2">之value和name的区别
  • 原文地址:https://www.cnblogs.com/dachuang/p/3008360.html
Copyright © 2011-2022 走看看