• C# 图片生成缩略图


    C# 图片生成缩略图方法:

     1 /// <summary>
     2 /// 生成缩略图
     3 /// </summary>
     4 /// <param name="fileName">原图路径</param>
     5 /// <param name="newFile">缩略图路径</param>
     6 /// <param name="maxHeight">最大高度</param>
     7 /// <param name="maxWidth">最大宽度</param>
     8 public string ThumbnailImage(string fileName, string newFile, int maxHeight, int maxWidth)
     9 {
    10     System.Drawing.Image img = System.Drawing.Image.FromFile(fileName);
    11     System.Drawing.Imaging.ImageFormat thisFormat = img.RawFormat;
    12     //缩略图尺寸
    13     double w = 0.0;                              //图片的宽
    14     double h = 0.0;                              //图片的高
    15     double sw = Convert.ToDouble(img.Width);
    16     double sh = Convert.ToDouble(img.Height);
    17     double mw = Convert.ToDouble(maxWidth);
    18     double mh = Convert.ToDouble(maxHeight);
    19     if (sw < mw && sh < mh)
    20     {
    21         w = sw;
    22         h = sh;
    23     }
    24     else if ((sw / sh) > (mw / mh))
    25     {
    26         w = maxWidth;
    27         h = (w * sh) / sw;
    28     }
    29     else
    30     {
    31         h = maxHeight;
    32         w = (h * sw) / sh;
    33     }
    34     Size newSize = new Size(Convert.ToInt32(w), Convert.ToInt32(h));
    35     Bitmap outBmp = new Bitmap(newSize.Width, newSize.Height);
    36     Graphics g = Graphics.FromImage(outBmp);
    37     //设置画布的描绘质量
    38     g.CompositingQuality = CompositingQuality.HighQuality;
    39     g.SmoothingMode = SmoothingMode.HighQuality;
    40     g.InterpolationMode = InterpolationMode.HighQualityBicubic;
    41     g.DrawImage(img, new Rectangle(0, 0, newSize.Width, newSize.Height), 0, 0, img.Width, img.Height, GraphicsUnit.Pixel);
    42     g.Dispose();
    43     //以下代码为保存图片时,设置压缩质量
    44     EncoderParameters encoderParams = new EncoderParameters();
    45     long[] quality = new long[1];
    46     quality[0] = 100;
    47     EncoderParameter encoderParam = new EncoderParameter(System.Drawing.Imaging.Encoder.Quality, quality);
    48     encoderParams.Param[0] = encoderParam;
    49     //获得包含有关内置图像编码解码器的信息的ImageCodecInfo 对象.
    50     ImageCodecInfo[] arrayICI = ImageCodecInfo.GetImageEncoders();
    51     ImageCodecInfo jpegICI = null;
    52     for (int x = 0; x < arrayICI.Length;x++)
    53     {
    54         if (arrayICI[x].FormatDescription.Equals("JPEG"))
    55         {
    56             jpegICI = arrayICI[x];
    57             //设置JPEG编码
    58             break;
    59         }
    60      }
    61      if (jpegICI != null)
    62      {
    63          Bitmap newbit = new Bitmap(outBmp);
    64          newbit.Save(newFile, jpegICI, encoderParams);
    65      }
    66      else
    67      {
    68          outBmp.Save(newFile,
    69          thisFormat);
    70      }
    71      img.Dispose();
    72      outBmp.Dispose();
    73      return newFile;
    74 }
  • 相关阅读:
    VS停止调试,IIS Express也跟着关闭了
    会钓鱼的程序员
    彻底搞懂https原理
    Java小知识
    ORA-01000: 超出打开游标的最大数(java.sql.SQLException: ORA-00604: 递归 SQL 级别 1 出现错误)
    虚拟机电脑重启后连接不上ORACLE
    电视直播源
    国内开源镜像站
    分享一波泰勒斯威夫特手机高清壁纸
    阿里云网盘内测申请
  • 原文地址:https://www.cnblogs.com/yuwentao/p/8392175.html
Copyright © 2020-2023  润新知