图片压缩,修改图片dpi值,更改图片大小

本文介绍了一种通过调整图片DPI来实现图片压缩的方法,该方法能够在保持图片清晰度的同时显著减小文件大小。文章提供了具体的代码实现,涵盖了图片加载、DPI设置及保存等步骤。

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

主要修改图片dpi值,原理:电脑一般dpi为96,图片dpi超过这个值后,图片清晰度没多大变化,降低图片dpi值就能大幅度降低图片大小,如图片dpi为180,将其降到96后,图片宽高比例不变,图片大小也会降到很小。


class ImageHelper

    {
        /// <summary>
        /// 图片压缩(若width或height其中一个为值为零,则按原比例宽高压缩);
        /// </summary>
        /// <param name="postFile">原图片路径</param>
        /// <param name="saveFilePath">压缩图片存储文件夹路径</param>
        /// <param name="width">压缩图片宽度</param>
        /// <param name="height">压缩图片高度</param>
        /// <param name="imgResolution">单位分辨率(dpi)</param>
        public static void Compress(string postFile, string saveFilePath,int width,int height, float imgResolution)
        {
           if(File.Exists(postFile))
           {
               System.Drawing.Image img = null;
               Bitmap bit = null;
               try
               {
                   img = System.Drawing.Image.FromFile(postFile);
                   bit = new Bitmap(img);
                   bit.SetResolution(imgResolution, imgResolution);//设置dpi
                   if (width != 0 && height != 0)
                   {
                       bit.SetPixel(width, height, Color.Transparent);//设置宽高
                   }


                   if (File.Exists(postFile))
                   {
                       string saveFile = saveFilePath + Path.GetFileNameWithoutExtension(postFile) + "_";
                       string extension = Path.GetExtension(postFile);
                       if (extension != null)
                       {
                           string imgFormat = extension.ToLower();
                           switch (imgFormat)
                           {
                               case ".jpg":
                                   bit.Save(saveFile + ".jpg", ImageFormat.Jpeg); break;
                               case ".jpeg":
                                   bit.Save(saveFile + ".jpeg", ImageFormat.Jpeg); break;
                               case ".png":
                                   bit.Save(saveFile + ".png", ImageFormat.Png); break;
                               case ".bmp":
                                   bit.Save(saveFile + ".bmp", ImageFormat.Bmp); break;
                           };
                       }
                   }
               }
               catch(Exception e)
               {
                   throw new Exception(e.ToString());
               }
               finally
               {
                   if (img != null)
                   {
                       img.Dispose();
                   }
                   if (bit != null)
                   {
                       bit.Dispose();
                   }
               }
           }

        }

    }
}

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值