• C# 生成缩略图 方法


       #region -生成缩略图-
            /// <summary>
            /// 生成缩略图
            /// </summary>
            /// <param name="orginalImagePath">原图片对象</param>
            /// <param name="thumbnailPath">缩略图的路径</param>
            /// <param name="width">指定宽度</param>
            /// <param name="heigth">指定高度</param>
            /// <param name="model">缩放类型 HW:可以变形 W:指定宽度,高安比例缩放 "H"://指定高度,宽安比例绽放 "Cut"://指定高宽,裁减(不变形)</param>
            public  void MakeThumbnail(Image orginalPric, string thumbnailPath, int width, int height, EnumThumbnailModel model)
            {
                Image originalImage = orginalPric;//获得图片对象
    
                int towidth = width;
                int toheight = height;
    
                int x = 0;
                int y = 0;
    
                int ow = originalImage.Width;
                int oh = originalImage.Height;
    
                #region -缩略图的类型-
                switch (model)
                {
                    case EnumThumbnailModel.HW://指定高宽缩放(可以变形)
                        break;
                    case EnumThumbnailModel.W://指定宽度,高安比例缩放
                        toheight = originalImage.Height * width / originalImage.Width;
                        break;
                    case EnumThumbnailModel.H://指定高度,宽安比例绽放
                        towidth = originalImage.Width * height / originalImage.Height;
                        break;
                    case EnumThumbnailModel.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 * towidth / towidth;
                            y = 0;
                            x = (originalImage.Height - oh) / 2;
                        }
    
                        break;
                    default:
                        break;
                }
                #endregion
    
                //新建一个bmp图片
                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);
                }
                catch (System.Exception e)
                {
                    throw e;
                }
                finally
                {
                    originalImage.Dispose();
                    bitmap.Dispose();
                    g.Dispose();
                }
            }
    
            /// <summary>
            /// 生成缩略图
            /// </summary>
            /// <param name="orginalPric">原始图片</param>
            /// <param name="thumbnailPath">缩略图路径</param>
            /// <param name="width">宽度</param>
            /// <param name="heigth">高度</param>
            /// <param name="model">类型 缩放类型 HW:可以变形 W:指定宽度,高安比例缩放 "H"://指定高度,宽安比例绽放 "Cut"://指定高宽,裁减(不变形)</param>
            /// <returns></returns>
            public void MakeThumbnail(string originalImagePath, string thumbnailPath, int width, int height, EnumThumbnailModel mode)
            {
                Image originalImage = Image.FromFile(originalImagePath);
                MakeThumbnail(originalImage, thumbnailPath, width, height, mode);
            }
            #endregion
    

      

  • 相关阅读:
    let jsp embedded dynamic language python ruby groovy
    The C Book — Table of Contents
    E4X 维基百科,自由的百科全书
    github for windows
    C File I/O Tutorial Cprogramming.com
    RequireJS入门(一)
    微信技术总监分享架构设计 下载频道 CSDN.NET
    C语言编程程序的内存布局
    Niocchi Java crawl library implementing synchronous I/O multiplexing
    Michael Barr « Embedded Gurus – Experts on Embedded Software
  • 原文地址:https://www.cnblogs.com/LikeNeng/p/4215580.html
Copyright © 2020-2023  润新知