从 JpegDecoderr 获取 ''Missing SOI marker.'
Getting ''Missing SOI marker.' from JpegDecoderr
我 运行 遇到打开 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 文件:
有没有 ImageSharp 的 riff 插件?
看起来 ImageSharp 的人一直在努力支持 WebP。
这个问题很好地描述了进展情况:
https://github.com/SixLabors/ImageSharp/issues/121
if Image.Load(imageStream) 使用 fileStream 调用,但 Position 未设置为零,您还可能遇到解码器未找到的错误...
stream.Position = 0;
https://github.com/SixLabors/ImageSharp/issues/164#issuecomment-291784371
我 运行 遇到打开 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 文件:
有没有 ImageSharp 的 riff 插件?
看起来 ImageSharp 的人一直在努力支持 WebP。
这个问题很好地描述了进展情况:
https://github.com/SixLabors/ImageSharp/issues/121
if Image.Load(imageStream) 使用 fileStream 调用,但 Position 未设置为零,您还可能遇到解码器未找到的错误...
stream.Position = 0;
https://github.com/SixLabors/ImageSharp/issues/164#issuecomment-291784371