图片生成缩略图

本文介绍了一种生成图片缩略图的方法,通过指定宽度、高度和缩略方式来创建缩略图。支持按比例缩放、指定高宽裁剪等多种模式,并确保图片质量。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

网站及各种程序中经常出现上传的图片过大或者尺寸不合适的情况


此文用于生成缩略图


  ///   <summary>
      ///   生成缩略图
      ///   </summary>
      ///   <param name="originalImagePath">   源图路径(物理路径)   </param>
      ///   <param name="thumbnailPath">   缩略图路径(物理路径)   </param>
      ///   <param name="width"> 缩略图宽度   </param>
      ///   <param name="height"> 缩略图高度   </param>
      ///   <param name="mode"> 生成缩略图的方式   </param>
      ///   <param name="outthumbnailPath">   返回缩略图的   </param>
      public   void   MakeThumbnail( string   originalImagePath,   string   thumbnailPath,   int   width,   int   height,   out   string   outthumbnailPath)
    {
        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;


          // {
          // 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);

          // 新建一个画板
          Graphics   g = System.Drawing. Graphics   .FromImage(bitmap);

          // 设置高质量插值法
        g.InterpolationMode = System.Drawing.Drawing2D.   InterpolationMode .High;

          // 设置高质量 ,   低速度呈现平滑程度
        g.SmoothingMode = System.Drawing.Drawing2D.   SmoothingMode .HighQuality;

          // 清空画布并以透明背景色填充
        g.Clear(   Color .Transparent);

          // 在指定位置并且按指定大小绘制原图片的指定部分
        g.DrawImage(originalImage,   new   Rectangle   (0, 0, towidth, toheight),
          new   Rectangle   (x, y, ow, oh),
          GraphicsUnit .Pixel);

          try
        {
              // jpg   格式保存缩略图
            bitmap.Save(thumbnailPath, System.Drawing.Imaging.   ImageFormat .Jpeg);
            outthumbnailPath = thumbnailPath;
        }
          catch   (System. Exception   e)
        {
              throw   e;
        }
          finally
        {
            originalImage.Dispose();
            bitmap.Dispose();
            g.Dispose();
        }
    }



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值