C#图片压缩
功能函数,从项目中剥离而来
/// <summary> /// 图片压缩功能 /// </summary> /// <param name="sourceImage">原图</param> /// <param name="targetSize">目标压缩尺寸</param> /// <returns></returns> public static Image imgCompress(Image sourceImage, Size targetSize) ///图片压缩功能 { int targetWidth = targetSize.Width, targetHeight = targetSize.Height; //图片转换的目标的尺寸;由于图片原有的比例问题,目标尺寸不等于最终的尺寸。 int width;//图片最终的宽 int height;//图片最终的高 try { System.Drawing.Imaging.ImageFormat format = sourceImage.RawFormat; Bitmap targetPicture = new Bitmap(targetWidth, targetHeight); Graphics g = Graphics.FromImage(targetPicture); g.Clear(Color.White); //计算缩放图片的大小 if (sourceImage.Width > targetWidth && sourceImage.Height <= targetHeight) { width = targetWidth; height = (width * sourceImage.Height) / sourceImage.Width; } else if (sourceImage.Width <= targetWidth && sourceImage.Height > targetHeight) { height = targetHeight; width = (height * sourceImage.Width) / sourceImage.Height; } else if (sourceImage.Width <= targetWidth && sourceImage.Height <= targetHeight) { width = sourceImage.Width; height = sourceImage.Height; } else { width = targetWidth; height = (width * sourceImage.Height) / sourceImage.Width; if (height > targetHeight) { height = targetHeight; width = (height * sourceImage.Width) / sourceImage.Height; } } g.DrawImage(sourceImage, (targetWidth - width) / 2, (targetHeight - height) / 2, width, height); sourceImage.Dispose(); return targetPicture; } catch (Exception ex) { } return null; }
调用示例
HttpPostedFile pic_upload = Request.Files["file"]; System.Drawing.Image bigImage = clsPublic.imgCompress(System.Drawing.Image.FromStream(pic_upload.InputStream), new Size(400, 400));//缩后的大图 System.Drawing.Image minImage =clsPublic.imgCompress(System.Drawing.Image.FromStream(pic_upload.InputStream), new Size(50, 50));//缩后的小图
分类:
每天十篇博文系列计划
, C#
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 【译】Visual Studio 中新的强大生产力特性
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构