.NET C# 读取编辑.AVIF图片文件
2024-12-15
11
在 .NET 中读取和编辑 .AVIF 图片文件需要特定的库支持,因为 System.Drawing 等内置功能不直接支持 AVIF 格式。目前可以通过以下方式在 .NET 中实现对 AVIF 文件的读取和编辑:
方法一:使用 ImageMagick 的 .NET 封装
ImageMagick 是一个强大的图像处理库,支持多种格式,包括 .AVIF。
安装 NuGet 包
使用以下命令安装 Magick.NET:
dotnet add package Magick.NET-Q8-AnyCPU
ImageMagick 示例代码
以下代码展示如何读取 AVIF 文件、编辑并保存为其他格式:
using ImageMagick;
using System;
class Program
{
static void Main(string[] args)
{
// 加载 .AVIF 文件
string inputPath = "example.avif";
string outputPath = "output.png";
using (var image = new MagickImage(inputPath))
{
Console.WriteLine($"图像格式: {image.Format}");
Console.WriteLine($"尺寸: {image.Width}x{image.Height}");
// 调整大小
image.Resize(300, 200);
// 添加水印文字
var drawables = new Drawables()
.Font("Arial")
.FontSize(20)
.StrokeColor(MagickColors.White)
.FillColor(MagickColors.Black)
.TextAlignment(TextAlignment.Center)
.Text(image.Width / 2, image.Height - 30, "Watermark");
drawables.Draw(image);
// 保存为 PNG
image.Write(outputPath);
Console.WriteLine($"保存成功: {outputPath}");
}
}
}
方法二:使用 SixLabors.ImageSharp
SixLabors.ImageSharp 是一个跨平台的图像处理库,但默认不支持 .AVIF 格式。可以通过安装扩展库 SixLabors.ImageSharp.Formats.Avif 来支持 AVIF。
安装 NuGet 包
dotnet add package SixLabors.ImageSharp
dotnet add package SixLabors.ImageSharp.Formats.Avif
SixLabors.ImageSharp 示例代码
以下代码展示如何使用 ImageSharp 加载和保存 AVIF 文件:
using SixLabors.ImageSharp;
using SixLabors.ImageSharp.PixelFormats;
using SixLabors.ImageSharp.Processing;
using SixLabors.ImageSharp.Formats.Avif;
class Program
{
static void Main()
{
// AVIF 文件路径
string inputPath = "example.avif";
string outputPath = "output.jpg";
// 加载 AVIF 图像
using (var image = Image.Load<Rgba32>(inputPath))
{
Console.WriteLine($"图片加载成功,宽度: {image.Width}, 高度: {image.Height}");
// 编辑图像 - 调整亮度
image.Mutate(ctx => ctx.Brightness(0.8f));
// 保存为 JPEG 格式
image.Save(outputPath);
Console.WriteLine($"图片已保存: {outputPath}");
}
}
}
根据具体需求选择合适的解决方案,以上方法均可灵活应用于读取和编辑 .AVIF 文件。
更新于:3天前赞一波!2
相关文章
- C#13新特性 使用System.Threading.Lock简化线程同步
- .NET C# SkiaSharp读取.AVIF图片文件报错
- .NET开源ORM FreeSql常见问题和解决方法
- 微软于发布了.NET 9 Release Candidate 2 提高整体质量
- 分享5个开源的.NET Excel读写操作库
- ASP.NET 使用Entity Framework (EF) 创建迁移修改SQLite数据库表结构
- 如何从.NET Framework迁移到.NET Core或.NET 6/7?
- 如何优化ASP.NET Core应用的性能?
- 10款.NET开发中推荐的代码分析和质量工具
- .NET9 Blazor有哪些更新?
- 在Docker、Kubernetes环境下部署.NET应用的最佳实践
- .NET 游戏开发框架有哪些?
- PluginCore 基于 ASP.NET Core 的轻量级插件框架
- .NET C# EntityFramework(EF)连接SQLite代码示例
- Sylvan.Data.Excel 性能优异的开源.NET Excel数据读取库
- ASP.NET Core 中常用的内置中间件
- .NET9 F#有什么新特性?
- .NET 开源 ORM FreeSql 使用教程
- .NET9 C# 13 有哪些新特性?
- .NET9 开始删除内置的 Swagger 支持 可使用Scalar.AspNetCore替代
文章评论
评论问答