C# 生成缩略图

public class ThumbnailHelper
    {
        /// <summary>
        /// 生成缩略图(最终图片固定大小,图片按照传入宽度和高度进行缩小,以传入格式进行保存,支持jpg、bmp、gif、png;其他格式默认以jpg格式保存)         
        /// </summary>
        /// /// <param name="sourceImg">原图片(物理路径)</param>         
        /// <param name="toPath">缩略图存放地址(物理路径,带文件名)</param>
        /// <param name="width">缩略图宽度</param>         
        /// <param name="height">缩略图高度</param>                 
        public static int MakePic(string sourceImg, string toPath, int pW, int pH)
        {
            System.Drawing.Image originalImage = null;
            System.Drawing.Image bitmap = null;
            System.Drawing.Graphics g = null;
            try
            {
                string imgType = sourceImg.Substring(sourceImg.LastIndexOf('.') + 1);
                originalImage = System.Drawing.Image.FromFile(sourceImg);

                int oW = originalImage.Width;//原始图片宽
                int oH = originalImage.Height;//原始图片高
                int tW = oW;//最终显示到页面宽
                int tH = oH;//最终显示到页面高

                //图片宽高赋值要求大小
                tW = pW;
                tH = pH;

                //新建一个bmp图片
                bitmap = new System.Drawing.Bitmap(tW, tH);
                //新建一个画板
                g = System.Drawing.Graphics.FromImage(bitmap);
                //设置高质量插值法
                g.InterpolationMode = System.Drawing.Drawing2D.InterpolationMode.High;
                //设置高质量,低速度呈现平滑程度
                g.SmoothingMode = System.Drawing.Drawing2D.SmoothingMode.HighQuality;
                //在指定位置并且按指定大小绘制原图片的指定部分
                g.DrawImage(originalImage, new System.Drawing.Rectangle(0, 0, tW, tH), new System.Drawing.Rectangle(0, 0, oW, oH), System.Drawing.GraphicsUnit.Pixel);
                //以原格式格式保存缩略图
                if (imgType == "jpg")
                {
                    bitmap.Save(toPath, System.Drawing.Imaging.ImageFormat.Jpeg);
                }
                else if (imgType == "gif")
                {
                    bitmap.Save(toPath, System.Drawing.Imaging.ImageFormat.Gif);
                }
                else if (imgType == "png")
                {
                    bitmap.Save(toPath, System.Drawing.Imaging.ImageFormat.Png);
                }
                else if (imgType == "bmp")
                {
                    bitmap.Save(toPath, System.Drawing.Imaging.ImageFormat.Bmp);
                }
                else
                {
                    bitmap.Save(toPath, System.Drawing.Imaging.ImageFormat.Jpeg);
                }
                return 1;
            }
            catch
            {
                return -1;
            }
            finally
            {
                if (originalImage != null)
                {
                    originalImage.Dispose();
                }
                if (bitmap != null)
                {
                    bitmap.Dispose();
                }
                if (g != null)
                {
                    g.Dispose();
                }
            }
        }
    }

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值