雷达智富

首页 > 内容 > 程序笔记 > 正文

程序笔记

.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

文章评论

评论问答