c# - 获取 '' 缺少 SOI 标记。来自 JpegDecoderr

标签 c# jpeg imagesharp

我在打开 jpg 文件时遇到问题。这是我开始的代码:

var image = await Image.LoadAsync("sample.jpg")

这产生了异常:

An exception of type 'SixLabors.ImageSharp.UnknownImageFormatException' occurred in System.Private.CoreLib.dll but was not handled in user code
Image cannot be loaded. Available decoders:
 - PNG : PngDecoder
 - GIF : GifDecoder
 - BMP : BmpDecoder
 - TGA : TgaDecoder
 - JPEG : JpegDecoder

为了确定文件未被识别为 jpeg 的原因,我使用了以下代码:

using (var stream = File.OpenRead("sample.jpg"))
{
   var jpegDecoder = new JpegDecoder();

   jpegDecoder.Decode(Configuration.Default, stream);
}

这给了我以下异常:

An unhandled exception of type 'SixLabors.ImageSharp.InvalidImageContentException' occurred in SixLabors.ImageSharp.dll
Missing SOI marker.

我倾向于认为所涉及的图像有问题,但我可以在 Windows 照片查看器和 Google Chrome 中查看它。如何确定文件有什么问题?

编辑:

感谢@user9938,我能够确定这是一个 RIFF 或 WEBPV8 文件:

Hex viewer

是否有 ImageSharp 的 riff 插件?

最佳答案

看起来 ImageSharp 人员一直在努力支持 WebP。

本期很好地描述了进展情况:

https://github.com/SixLabors/ImageSharp/issues/121

enter image description here

关于c# - 获取 '' 缺少 SOI 标记。来自 JpegDecoderr,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/70792715/

相关文章:

c# - 从 Azure 中的 SOAP Web 服务检索列表时出现 TargetInitationException

charts - 如何通过弹出另存为窗口将 kendo ui dataviz 图表导出为 (.png) 或 (.jpg) 图像格式?

c# - 将 ImageSharp.Image 转换为 ImageSharp.PixelFormats.Rgba32?

imagesharp - 使用 Image Sharp 保存两种颜色索引 (1bpp) PNG

c# - Resharper - 属性未记录

c# - 如何在读取或更新后关闭 MSI 文件

c# - 如何附加包含 n 到 n 关系的对象?

delphi - 为什么 EOutOfResources 中会泄漏内存?

Android Q - 从人像模式照片中获取深度图

imagesharp - 使用 ImageSharp 将 Image<Rgba32> 转换为 Byte[]