从没有0xFF 0xC0的jpeg获取宽度和高度

时间:2016-02-16 08:23:15

标签: image image-processing jpeg jfif

我正在尝试从jpeg获取文件尺寸(宽度和高度)(在本例中为Instagram图片)

https://scontent.cdninstagram.com/t51.2885-15/s640x640/sh0.08/e35/11264864_1701024620182742_1335691074_n.jpg

据我所知,宽度和高度是在0xFF 0xC0标记之后定义的,但是我在这张图片中找不到这个标记。它是否被剥离或是否有我应该检查的替代标记?

2 个答案:

答案 0 :(得分:1)

JPEG帧起始(SOF)标记有4个可能的值:

  • FFC0(基线) - 这是为照片选择的常用模式,并根据所选的颜色/子样本选项对分组中完全指定的DCT块进行编码
  • FFC1(扩展) - 这类似于基线,但有超过8位 每种颜色刺激
  • FFC2(逐行扫描) - 此模式通常位于网页上,以允许图像逐渐加载,因为数据是 接收。每个"扫描"图像的图像逐渐定义DCT块的更多系数,直到它们被完全定义。随着更多扫描被解码,这有效地提供了越来越多的细节
  • FFC3(无损) - 此模式使用简单的霍夫曼编码 无损编码图像。我见过这个唯一的地方是 关于16位灰度DICOM医学图像

如果您正在搜索字节以查找FFCx图案,请注意您可能在嵌入的缩略图图像中遇到一个(在FFE1 Exif标记内)。要正确找到主图像的SOFx,您需要遍历JPEG标记链。 2字节长度(big-endian)遵循2字节标记。要避免的最后一个陷阱是某些JPEG编码器在有效标记之间粘贴额外的FF值。如果您遇到标记应该在的FFFF,只需将指针递增1个字节,然后再次尝试直到您点击有效标记。

答案 1 :(得分:0)

你可以通过ImageMagick在大多数Linux发行版上安装它,并且可以在OSX和Windows上使用。

identify -ping https://scontent.cdninstagram.com/t51.2885-15/s640x640/sh0.08/e35/11264864_1701024620182742_1335691074_n.jpg

<强>输出

https://scontent.cdninstagram.com/t51....1074_n.jpg JPEG 640x640 640x640+0+0 8-bit sRGB 162KB 0.000u 0:00.000