C#使用Bitmap实现服务器端图片裁剪

闻溪
闻溪
发布时间:2026-10-13| 5人浏览过
原创

本文介绍了C#在服务器端裁剪指定区域图片的完整实现方案。通过System.Drawing库,可精准控制裁剪坐标与大小,包含路径处理、越界检查及内存释放等关键操作。

结果或目标

本示例旨在读取一张本地图片,按照指定的X/Y坐标和宽高截取其中一部分,并将截取后的画面保存为一个新的文件,同时确保原有图片未被损坏且系统资源得到及时回收。

准备条件

  • 项目需引用 System.Drawing 命名空间(通常包含在 mscorlib.dll 或 System.Drawing.Common 包中)。

  • 运行环境拥有对指定目录的文件读写权限。

  • 原图片文件存在且路径正确。

真实操作顺序

第1步:获取文件路径与构建新文件名

目的:确定输入源文件位置,计算输出文件的存储地址。

动作:

  1. 使用 Server.MapPath("~/relative/path") 将虚拟路径转换为物理磁盘路径。

  2. 解析原文件名后缀,拼接生成带有标识符(如 _new)的新文件名。

// 图片路径
String oldPath = Server.MapPath("~/62223231.jpg");
// 新图片路径
String newPath = System.IO.Path.GetExtension(oldPath);
// 设置截取的坐标和大小
int x = 0, y = 20, width = 200, height = 2400;
// 计算新的文件名,在旧文件名后加_new
newPath = oldPath.Substring(0, oldPath.Length - newPath.Length) + "_new" + newPath;

第2步:初始化裁剪区域与加载图片

目的:创建用于界定裁剪范围的矩形对象,并将原图加载到内存中进行后续处理。

参数说明:

  • x, y: 起始坐标点(左上角)。

  • width, height: 裁剪区域的宽和高。

// 定义截取矩形
System.Drawing.Rectangle cropArea = new System.Drawing.Rectangle(x, y, width, height); //要截取的区域大小
//加载图片
System.Drawing.Image img = System.Drawing.Image.FromStream(new System.IO.MemoryStream(System.IO.File.ReadAllBytes(oldPath)));

第3步:边界有效性检查

目的:防止用户输入的裁剪区域超出原图物理范围,避免引发运行时异常。

判断逻辑:

若 (img.Width < x + width) 或 (img.Height < y + height),说明目标区域部分甚至全部超出了图片本身的高度或宽度。

// 判断超出的位置否
if ((img.Width < x + width) || img.Height < y + height)
{
 Response.Write("截取的区域超过了图片本身的高度、宽度.");
 img.Dispose();
 return;
}

第4步:执行裁剪并保存结果

目的:从原图中克隆出目标矩形像素数据,保存为新文件,并清理内存占用。

核心方法:使用 Clone(Rectangle, PixelFormat) 方法进行位图裁剪。

// 定义Bitmap对象
System.Drawing.Bitmap bmpImage = new System.Drawing.Bitmap(img);
// 进行裁剪
System.Drawing.Bitmap bmpCrop = bmpImage.Clone(cropArea, bmpImage.PixelFormat);
// 保存成新文件
bmpCrop.Save(newPath);
// 释放对象
img.Dispose();
bmpCrop.Dispose();

完成判断

确认新文件已在指定目录下生成,其内容对应于原图的指定坐标区域,且代码运行结束未抛出任何异常。

简要总结

以上就是C#实现在服务器端裁剪图片的详细方法,更多关于C#图像处理优化的资料请关注本站其它相关文章!

相关标签:

免责声明:本文内容仅供参考,不代表本站观点。转载或引用请注明出处。

Python 相关产品和应用

全部下载
Selenium

Selenium

4.51.0 · Windows

用于浏览器自动化和 Web 测试的 Python 工具。

scikit-learn

scikit-learn

1.9.1 · Windows

常用 Python 机器学习算法与模型评估工具库。

Black

Black

26.10.1 · Windows

强调一致性的 Python 自动代码格式化工具。

Ruff

Ruff

0.17.1 · macOS

由 Rust 编写的高速 Python 代码检查和格式化工具。

pytest

pytest

9.1.1 · Windows

简洁而强大的 Python 自动化测试框架。

FastAPI

FastAPI

0.146.0 · Windows

高性能 Python API 框架,支持类型提示和自动接口文档。

Flask

Flask

3.1.3 · Windows

轻量灵活的 Python Web 应用框架。

Django

Django

6.1.2 · Windows

成熟的 Python Web 框架,适合构建内容站点和业务系统。

Spyder

Spyder

6.1.7 · Windows

面向科学计算与数据分析的 Python 集成开发环境。

SciPy

SciPy

1.18.1 · Windows

面向科学、工程和技术计算的 Python 算法库。