Ich habe auch die Vermutung, dass GetImageType etwas am Position des Streams verändert. Daher mache anstatt den 2 GetImageType Aufrufen nur einen wie folgt:
Code:
s := TypeToStr(GetImageType(Data));
if s = 'Image/JPEG' then
Image.LoadFromStream(Data) // <--- das funktioniert !!!
else if s = 'Image/PNG' then
...