C# 如何处理图像文件 - System.Drawing与ImageSharp

php中文网
发布: 2025-12-07 21:20:41
原创
424人浏览过
优先选 ImageSharp;它跨平台、内存友好、支持新格式且线程安全,而 System.Drawing 仅限 Windows、易句柄泄漏且不支持 WebP/AVIF。

c# 如何处理图像文件 - system.drawing与imagesharp

在 C# 中处理图像文件,System.DrawingImageSharp 是两个主流选择,但它们定位不同:前者是 Windows 传统方案,后者是跨平台现代替代品。选哪个,关键看项目目标、运行环境和维护需求。

System.Drawing:简单直接,但有局限

System.Drawing 是 .NET Framework 时代就存在的 API,基于 GDI+,在 Windows 上稳定高效。.NET Core 3.0+ 起它被标记为“仅限 Windows”,Linux/macOS 下可能崩溃或功能受限(比如字体渲染、某些编码器缺失)。

常见用法示例:

  • 加载图片:var img = Image.FromFile("photo.jpg");
  • 缩放并保存:img.GetThumbnailImage(200, 200, null, IntPtr.Zero).Save("thumb.png");
  • 绘制文字:Graphics.FromImage(img).DrawString("Hello", font, brush, point);

注意:必须手动调用 Dispose() 防止 GDI 句柄泄漏;多线程下不安全,需加锁或改用每个请求新建实例。

ImageSharp:跨平台、内存友好、设计现代

ImageSharp 是纯 C# 实现的高性能图像库,支持 .NET Standard 2.0+,Windows/Linux/macOS 全平台一致,无外部依赖,且默认启用内存池与 SIMD 加速(如 AVX2)。

典型操作更明确、更安全:

Animate AI
Animate AI

Animate AI是个一站式AI动画故事视频生成工具

Animate AI 234
查看详情 Animate AI
  • 加载并调整尺寸:using var image = await Image.LoadAsync("photo.jpg"); image.Mutate(x => x.Resize(200, 200)); await image.SaveAsync("thumb.jpg");
  • 支持 WebP/AVIF 等新格式(需额外安装 ImageSharp.WebPImageSharp.AVIF 包)
  • 可精细控制解码参数(如 JPEG 的采样率、渐进式加载)、编码质量、色彩空间转换

缺点是学习曲线略高,API 基于不可变图像(Mutate 才修改),对习惯“直接改图”的开发者需要适应。

怎么选?看这三点

选 System.Drawing 如果:项目只跑 Windows、代码量小、维护周期短、已有大量 GDI+ 逻辑、不涉及 WebP/HEIC 等新格式。

选 ImageSharp 如果:要部署到 Linux 容器、做高并发图像服务(如 CDN 缩略图)、需要精准控制压缩质量与元数据、长期维护、或用 .NET 6+ 新项目。

迁移建议:旧项目不必强切,但新模块推荐直接用 ImageSharp;若必须保留 System.Drawing,可用 Microsoft.Extensions.DependencyInjection 封装成统一图像服务接口,便于将来替换。

基本上就这些。不复杂但容易忽略的是:别在 ASP.NET Core 请求中长期持有 Image 实例,无论用哪个库,都该即用即释放 —— 尤其是 System.Drawing,在 Linux 容器里真会静默失败。

以上就是C# 如何处理图像文件 - System.Drawing与ImageSharp的详细内容,更多请关注php中文网其它相关文章!

Windows激活工具
Windows激活工具

Windows激活工具是正版认证的激活工具,永久激活,一键解决windows许可证即将过期。可激活win7系统、win8.1系统、win10系统、win11系统。下载后先看完视频激活教程,再进行操作,100%激活成功。

下载
来源:php中文网
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
最新问题
开源免费商场系统广告
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新 English
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号