1

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

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

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

4

2 回答 2

1

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

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

如果您正在扫描字节以查找 FFCx 模式,请注意您可能会在嵌入的缩略图图像中遇到一个(在 FFE1 Exif 标记内)。要正确找到主图像的 SOFx,您需要遍历 JPEG 标记链。2 字节长度(big-endian)跟在 2 字节标记之后。要避免的最后一个陷阱是一些 JPEG 编码器在有效标记之间粘贴额外的 FF 值。如果您在应有标记的位置遇到 FFFF,只需将指针增加 1 个字节,然后重试,直到找到有效标记。

于 2016-02-16T21:23:53.123 回答
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
于 2016-02-16T11:00:01.500 回答