It looks like TJPegImage.LoadFromStream corrupts streams offset, you could store the size of each image in the stream and seek with recalculated offsets after every call to TJPegImage.LoadFromStream