C#压缩图片

SqlSer数据库设置保存图片字段类型为Image类型

对应保存

方法参数为图片路径压缩后路径压缩最大宽度压缩最大高度

 

 

引用类型using System.Data; using System.Drawing; using System.IO;

 

\完整类

/// <summary>

        /// 按比例缩放,图片不会变形,会优先满足原图和最大长宽比例最高的一项

        /// </summary>

        /// <param name="oldPath">图片路径</param>

        /// <param name="newPath">压缩后路径</param>

        /// <param name="maxWidth">压缩最大宽度</param>

        /// <param name="maxHeight">压缩最大高度</param>

        public static void CompressPrecent(string oldPath, string newPath, int maxWidth, int maxHeight)

        {

            System.Drawing.Image _sourceImg = System.Drawing.Image.FromFile(oldPath);

            double _newW = maxWidth;

            double _newH = maxWidth;

            double percentWidth = (double)_sourceImg.Width > maxWidth ? maxWidth : _sourceImg.Width;

            if (_sourceImg.Height * (double)percentWidth / _sourceImg.Width > maxHeight)

            {

                _newH = maxHeight;

                _newW = maxHeight / (double)_sourceImg.Height * _sourceImg.Width;

            }

            else

            {

                _newW = percentWidth;

                _newH = (percentWidth / _sourceImg.Width) * _sourceImg.Height;

            }

            System.Drawing.Image bitmap = new Bitmap((int)_newW, (int)_newH);

            Graphics g = Graphics.FromImage(bitmap);

            g.InterpolationMode = System.Drawing.Drawing2D.InterpolationMode.High;

            g.SmoothingMode = System.Drawing.Drawing2D.SmoothingMode.HighQuality;

            g.Clear(System.Drawing.Color.Transparent);

            g.DrawImage(_sourceImg, new System.Drawing.Rectangle(0, 0, (int)_newW, (int)_newH),

                new System.Drawing.Rectangle(0, 0, _sourceImg.Width, _sourceImg.Height), GraphicsUnit.Pixel);

            _sourceImg.Dispose();

            g.Dispose();

            bitmap.Save(newPath, System.Drawing.Imaging.ImageFormat.Jpeg);

            bitmap.Dispose();

        }

今天就分享到这里,敬请关注后面

初来乍到,请多多指教,大神勿喷。若有错误之处,欢迎指导

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值