我正在尝试在 Python 中为 .jpeg 图像制作文件雕刻器,但不幸的是,我发现它比我想象的要困难得多。
据我所知,我面临的问题是由缩略图图像中的多个 SOI 和 EOI 标记引起的。
我需要一种方法来分离缩略图和实际图像,但考虑到 EOI 只是 FFD9,我发现这很难。
我的代码:
with open(r'\\.\X:', 'rb') as f:
startfile = 0
size = 0
start = '\xFF\xD8\xFF\xE0'
end = '\xFF\xD9'
chunksize = 512
chunk = f.read(chunksize)
while chunk:
s = chunk.find(start)
e = chunk.find(end)
if s >= 0: startfile = f.tell() - chunksize + s
if e >= 0: size = f.tell() - chunksize + e + 2
if startfile and size:
eof = size-startfile
images.append((startfile, eof))
startfile = size = 0
chunk = f.read(chunksize)
for pos, item in enumerate(images):
with open(str(pos)+'.jpg', 'wb') as o:
f.seek(item[0])
o.write(f.read(item[1])