C#后端实现图片压缩与尺寸优化
下载需积分: 10 | TXT格式 | 3KB |
更新于2024-09-08
| 32 浏览量 | 举报
在C#后端开发中,图片压缩是一个常见的需求,特别是在处理上传或显示大尺寸图片时,为了提高性能和用户体验,优化图片大小至关重要。这段代码片段提供了一个名为`compression`的方法,用于调整图片大小并进行质量压缩。以下是该方法的核心部分:
1. 首先,通过`System.Drawing.Image.FromFile(filePath)`加载本地图片文件,获取到`Image`对象,存储为`img`。
2. 保存原始图片格式,`img.RawFormat`用于后续恢复图像质量。
3. 计算缩放后的图片尺寸,`tem_size`是根据原始图片宽度和高度计算出的新尺寸,如果原图高度超过700像素,则保持高度为700像素,宽度按比例缩放,确保长宽比不变。计算公式为:`sW = Convert.ToInt32(tem_size.Width * (700 / Convert.ToDouble(tem_size.Height)))`。这里采用了等比例缩放策略,以保持图片不失真。
4. 创建一个新的`Bitmap`对象`oB`,大小为缩放后的宽度和高度,用于存储压缩后的图片。
5. 使用`Graphics.FromImage(oB)`创建一个`Graphics`对象,用于在新的`Bitmap`上绘制压缩后的图像。
6. 清除`Graphics`对象的背景,设置`g.Clear(Color.WhiteSmoke)`,这是一种淡灰色,作为透明背景。
7. 设置绘图质量、平滑模式和插值模式为高质,以确保压缩后的图像质量尽可能高,`g.CompositingQuality = CompositingQuality.HighQuality; g.SmoothingMode = SmoothingMode.HighQuality; g.InterpolationMode = InterpolationMode.HighQualityBicubic;`
8. 最后,调用`g.DrawImage(img, newRectangle(0, 0, sW, sH), 0, 0, img.Width, img.Height, GraphicsUnit.Pixel)`来将原始图片画入新的`Bitmap`中,指定绘制区域和坐标。
这个`compression`方法的主要作用是接收一个文件路径和URL,读取图片,根据设定的尺寸限制对图片进行高质量的压缩,并返回压缩后的Bitmap对象。开发者可以根据实际需求,调整压缩参数,如最大高度限制,或者使用不同的压缩算法以平衡质量和大小。在遇到问题时,可以通过留言寻求帮助,作者会及时回应。这个功能对于Web应用和移动应用的性能优化至关重要。
相关推荐
![filetype](https://img-home.csdnimg.cn/images/20250102104920.png)
![filetype](https://img-home.csdnimg.cn/images/20210720083606.png)
![filetype](https://img-home.csdnimg.cn/images/20241231044930.png)
![filetype](https://img-home.csdnimg.cn/images/20250102104920.png)
![filetype](https://img-home.csdnimg.cn/images/20241231044955.png)
![filetype](https://img-home.csdnimg.cn/images/20241231044955.png)
![filetype](https://img-home.csdnimg.cn/images/20241231044955.png)
![filetype](https://img-home.csdnimg.cn/images/20241231044955.png)
![filetype](https://img-home.csdnimg.cn/images/20241231044955.png)
![](https://profile-avatar.csdnimg.cn/default.jpg!1)
11楼的日J
- 粉丝: 2
最新资源
- Next.js入门指南与部署教程
- 现浇钢筋砼空心板空心管的设计与应用研究
- 风机全自动控制PLC程序源代码解析
- Apk2src反编译工具:ActivePerl_5.16.2.3010812913.msi使用指南
- 仿华为日落动画实现技术解析与安卓效果展示
- SQLite与Python3的数据处理与导出实践
- STK软件在获取航天器二维转动指向角度的应用研究
- Qt4.8+环境下的sqlite3封装源代码详解
- PowerBuilder界面设计技巧与实践
- 51单片机典型应用开发范例大全第3版
- MPI 2018.1.163版本下载与配套资源分享
- Azureus Vuze BT下载器5.7.6.0版本特性与下载指南
- 瓦楞纸生产与水循环封闭系统的创新设计
- AppEngine MapReduce源码包压缩文件解读
- 深入分析CPU-Z:电脑硬件检测神器
- Angular项目预售流程:开发、构建与测试