如何在没有 headers 的情况下找到 .jpg 文件大小?

How to find .jpg file size without headers?

我需要找到 .jpg 文件的大小,但不包含其 header(或元数据)。我该怎么做?

我猜 JPEG 数据包含两部分:

  1. Header 或与图像无关但包含有关子采样值或量化信息的元数据 table
  2. 图片压缩后的主要数据,依图片而定。出于某种原因,我只关心主要数据的大小。如何获取大小(以字节为单位)?

感谢评论。正如 Anon Coward 所说,我发现了这张有用的图像,它显示了 JPEG 文件的不同部分:

我想要 Image Data 的长度,所以我需要找到 0xFF 0xDA 并从那里计算字节数,然后从中减去 16。这是代码:

def get_JPEG_size(file_path):
  total_size = os.path.getsize(file_path)

  with open(file_path, 'rb') as f:
    s = f.read()
  
  header_size = s.find(b'\xff\xda')
  if header_size == -1:
    print("`FF DA` not found!")
    return 0
  header_size += (2 + 12) + 2
  
  data_size = total_size - header_size

  return data_size