如何在没有 headers 的情况下找到 .jpg 文件大小?
How to find .jpg file size without headers?
我需要找到 .jpg
文件的大小,但不包含其 header(或元数据)。我该怎么做?
我猜 JPEG 数据包含两部分:
- Header 或与图像无关但包含有关子采样值或量化信息的元数据 table
- 图片压缩后的主要数据,依图片而定。出于某种原因,我只关心主要数据的大小。如何获取大小(以字节为单位)?
感谢评论。正如 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
我需要找到 .jpg
文件的大小,但不包含其 header(或元数据)。我该怎么做?
我猜 JPEG 数据包含两部分:
- Header 或与图像无关但包含有关子采样值或量化信息的元数据 table
- 图片压缩后的主要数据,依图片而定。出于某种原因,我只关心主要数据的大小。如何获取大小(以字节为单位)?
感谢评论。正如 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