asp.net 根据图片路径生成缩略图

此代码示例展示了如何生成一张图片的缩略图,并调整其大小为指定的宽度和高度。通过输入原图路径、缩略图保存位置及所需尺寸,程序将创建并保存相应的缩略图。

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

/// <summary>
        /// 生成缩略图
        /// </summary>
        /// <param name="originalImagePath">原图位置</param>
        /// <param name="thumbnailPath">缩略图保存位置</param>
        /// <param name="width">需要改变的大小(宽高相同的正方形)</param>
        public void CreateMinImageAndDel(string originalImagePath, string thumbnailPath, int width,int height)
        {
            Graphics draw = null;
            string FileExt = "";
            if (!Directory.Exists(thumbnailPath))
            {
                Directory.CreateDirectory(thumbnailPath);
            }
            System.Drawing.Image originalImage = System.Drawing.Image.FromFile(originalImagePath);
            string photoExtesion = System.IO.Path.GetExtension(originalImagePath).ToLower();


            //缩略图位置
            int toX = 0;
            int toY = 0;


            //原图的宽和高
            int ow = originalImage.Width;
            int oh = originalImage.Height;


            //缩略图的宽和高
            int toWidth = 0;
            int toHeight = 0;


            // 宽高比例,的两种特殊情况处理
            if (ow < oh)
            {
                toWidth = Convert.ToInt32(Convert.ToDouble(ow) * (Convert.ToDouble(width) / Convert.ToDouble(oh)));
                toHeight = width;


                // 计算显示位置
                toX = (toHeight - toWidth) / 2;
            }
            else
            {
                toWidth = width;
                toHeight = Convert.ToInt32(Convert.ToDouble(oh) * (Convert.ToDouble(width) / Convert.ToDouble(ow)));


                // 计算显示位置
                toY = (toWidth - toHeight) / 2;
            }


            //新建一个bmp图片
            System.Drawing.Image bitmap = new System.Drawing.Bitmap(width, width);
            System.Drawing.Image bitmap2 = new System.Drawing.Bitmap(width, width);


            //新建一个画板
            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.Clear(System.Drawing.Color.White);


            //在指定位置并且按指定大小绘制原图片的指定部分
            g.DrawImage(originalImage, new System.Drawing.Rectangle(toX, toY, toWidth, toHeight));


            try
            {
                //以jpg格式保存缩略图
                FileExt = Path.GetFileNameWithoutExtension(originalImagePath);


                //用新建立的image对象拷贝bitmap对象 让g对象可以释放资源
                draw = Graphics.FromImage(bitmap2);
                draw.DrawImage(bitmap, 0, 0);


            }
            catch (System.Exception e)
            {
                throw e;
            }
            finally
            {
                originalImage.Dispose();
                bitmap.Dispose();
                g.Dispose();


                //保存调整在这里即可 
                    bitmap2.Save(thumbnailPath + FileExt + ".png", System.Drawing.Imaging.ImageFormat.Png);
            }

        }

调用:

     原图路径:

    string url = Server.MapPath("images/TemporaryImage/BigPhoto/" + newname);

    // 生成小图路径
            string bcurl = Server.MapPath("images/TemporaryImage/SmallPhoto/");


            CreateMinImageAndDel(url, bcurl, 180,180);

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值