首页 > 编程知识 正文

css片等比例缩放,片等比例缩放按键

时间:2023-05-05 20:38:30 阅读:269904 作者:2281

突然接受到一个需求,要将客户的一部分高质量图压缩并且等比例缩放到800px。


尝试很多,遇到两个问题:

1.图片压缩了,14MB大概还有50KB左右,质量差的很,和原图很不一样。

2.图片等比例缩放了,但是14MB做下来还有1MB


于是就有了以下的方法(图片无损压缩和无损等比例缩放),效果和明显,14MB在压缩质量为80%并且等比例缩放之后,只有100KB左右。

最下方会开放源码免费下载。


当然,方法也是从老前辈那里拿来的:

/// <summary> /// 图片无损压缩 无损等比例缩放. /// </summary> /// <param name="sFile">The s file.</param> /// <param name="dFile">The d file.</param> /// <param name="dHeight">Height of the d.</param> /// <param name="dWidth">Width of the d.</param> /// <param name="flag">The flag.</param> /// <returns><c>true</c> if XXXX, <c>false</c> otherwise.</returns> public static bool GetPicThumbnail(string sFile, string dFile, int dHeight, int dWidth, int flag) { System.Drawing.Image iSource = System.Drawing.Image.FromFile(sFile); ImageFormat tFormat = iSource.RawFormat; int sW = 0, sH = 0; //按比例缩放 Size tem_size = new Size(iSource.Width, iSource.Height); if (tem_size.Width > dHeight || tem_size.Width > dWidth) //将**改成c#中的或者操作符号 { if ((tem_size.Width * dHeight) > (tem_size.Height * dWidth)) { sW = dWidth; sH = (dWidth * tem_size.Height) / tem_size.Width; } else { sH = dHeight; sW = (tem_size.Width * dHeight) / tem_size.Height; } } else { sW = tem_size.Width; sH = tem_size.Height; } Bitmap ob = new Bitmap(dWidth, dHeight); Graphics g = Graphics.FromImage(ob); g.Clear(Color.WhiteSmoke); g.CompositingQuality = CompositingQuality.HighQuality; g.SmoothingMode = SmoothingMode.HighQuality; g.InterpolationMode = InterpolationMode.HighQualityBicubic; g.DrawImage(iSource, new Rectangle((dWidth - sW) / 2, (dHeight - sH) / 2, sW, sH), 0, 0, iSource.Width, iSource.Height, GraphicsUnit.Pixel); g.Dispose(); //以下代码为保存图片时,设置压缩质量 EncoderParameters ep = new EncoderParameters(); long[] qy = new long[1]; qy[0] = flag;//设置压缩的比例1-100 EncoderParameter eParam = new EncoderParameter(System.Drawing.Imaging.Encoder.Quality, qy); ep.Param[0] = eParam; try { ImageCodecInfo[] arrayICI = ImageCodecInfo.GetImageEncoders(); ImageCodecInfo jpegICIinfo = null; for (int x = 0; x < arrayICI.Length; x++) { if (arrayICI[x].FormatDescription.Equals("JPEG")) { jpegICIinfo = arrayICI[x]; break; } } if (jpegICIinfo != null) { ob.Save(dFile, jpegICIinfo, ep);//dFile是压缩后的新路径 } else { ob.Save(dFile, tFormat); } return true; } catch { return false; } finally { iSource.Dispose(); ob.Dispose(); } }

东西很实用!分享给大家


源代码下载地址:图片无损压缩,等比例缩放


说明一下,源码大家放心下载就可以了,开发语言是C#。有人恶意评分导致资源只有1颗星,请见谅

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。