如何使用 ImageSharp 提取 jpeg 的 EXIF 缩略图?

How do I extract a jpeg's EXIF thumbnail using ImageSharp?

我正在尝试使用 C# ImageSharp 库从源 jpeg 中提取缩略图并将它们保存到文件系统。我看到在组件的智能感知中提到了它: SixLabors.ImageSharp.Image.Metadata.ExifProfile.CreateThumbnail()

...但我似乎找不到任何文档或示例来正确调用它。

我确实找到了这个:

using SixLabors.ImageSharp;
using SixLabors.ImageSharp.PixelFormats;
using SixLabors.ImageSharp.Processing;  

//method code:
Image<TPixel> thumbnail = image.Metadata.ExifProfile.CreateThumbnail<TPixel>();

https://docs.sixlabors.com/api/ImageSharp/SixLabors.ImageSharp.Metadata.Profiles.Exif.ExifProfile.html

...但我需要找到 TPixel 类型的位置才能使其正常工作。 VisualStudio 无法识别它,而且我似乎无法找到名称空间或无法正确使用它:

“找不到类型或命名空间名称 'TPixel'(是否缺少 using 指令或程序集引用?)”

旧版 Windows .NET Framework 可以为 System.Drawing.Image.Image.GetThumbnailImage() 执行此操作,并且运行良好。

编辑:使用 tocsoft 的回答,我将代码更改为:

if (image.Metadata.ExifProfile != null)
{
    Image<Rgba32> thumbnail = image.Metadata.ExifProfile.CreateThumbnail<Rgba32>();

    thumbnail.Save(thumbnailPath, encoder);
}

...但是,image.Metadata.ExifProfile 为空,这是意外的,因为我知道这些源图像具有 EXIF 数据。

编辑:实际上,它现在正在运行。成功!谢谢!

TPixelSixLabors.ImageSharp.PixelFormats 命名空间中的任何像素格式。但是除非您计划与其他需要以特定方式在内存中布置像素数据的系统进行互操作,否则您可能只想使用 Rgba32

Image<Rgba32> thumbnail = image.Metadata.ExifProfile.CreateThumbnail<Rgba32>();