首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在C#中解码JFIF图像文件

在C#中解码JFIF图像文件
EN

Stack Overflow用户
提问于 2010-11-25 08:13:18
回答 1查看 4.5K关注 0票数 1

我有一个JPEG图像,这是JFIF格式。我想解码它并得到它的尺寸。

下面是我的代码:

代码语言:javascript
复制
while (binaryReader.ReadByte() == 0xff)
        {
            byte marker = binaryReader.ReadByte();
            ushort chunkLength = binaryReader.ReadLittleEndianInt16();

            if (marker == 0xc0)
            {
                binaryReader.ReadByte();

                int height = binaryReader.ReadLittleEndianInt16();
                int width = binaryReader.ReadLittleEndianInt16();
                return new Size(width, height);
            }

            binaryReader.ReadBytes(chunkLength - 2);
        }

好的。这段代码很常见,你可以在互联网上找到它。它适用于大多数JPEG图像。

现在,这个特定的图像是由相机拍摄的-“佳能EOS 300D数码”,不支持这段代码。维度的标记是0xFFC2,而不是0xFFC0。

我的问题是哪一个是正确的?如果代码是正确的,那么佳能相机如何产生非标准图像?如果佳能相机是正确的,那么我们如何修复代码来正确地找到这张图像的尺寸?

谢谢。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2010-11-25 08:29:10

FFC2似乎是渐进式图像的标志。

例如,请参阅http://en.wikipedia.org/wiki/JPEG,它解释了什么是“渐进式”格式(参见"JPEG压缩“部分)。

是的,我认为您可以更改if语句以同时检查0xc0 (SOF0标记)和0xc2 (SOF2标记),因为它们似乎具有相似的结构(请参阅“语法和结构”部分)。另请参阅此处:http://fjcore.googlecode.com/svn/trunk/FJCore/Decoder/JpegDecoder.cs

我不是JPEG格式的专家,所以如果你正在开发一个任务关键型代码,你可能会想要检查专门的论坛。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/4272699

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档