public async Task DownloadTest4_LoadOnlyImageInfo() { var imgUrl = "https://raw.githubusercontent.com/cs-util-com/cscore/master/CsCore/assets/logo-cscore1024x1024_2.png"; var h = 1024; var w = 1024; var timingForFullImage = Log.MethodEntered("Load full image"); var fullImage = await new Uri(imgUrl).SendGET().GetResult <Stream>(); var info2 = await ImageLoader.GetImageInfoFrom(fullImage); fullImage.Dispose(); Assert.Equal(h, info2.Height); Assert.Equal(w, info2.Width); Log.MethodDone(timingForFullImage); var timingForImageInfoOny = Log.MethodEntered("Load only first bytes"); var stream = await new Uri(imgUrl).SendGET().GetResult <Stream>(); var firstBytes = await ImageLoader.CopyFirstBytes(stream, bytesToCopy : 500); Assert.True(firstBytes.CanSeek); var info = await ImageLoader.GetImageInfoFrom(firstBytes); firstBytes.Dispose(); Assert.Equal(w, info.Width); Assert.Equal(h, info.Height); Log.MethodDone(timingForImageInfoOny); stream.Dispose(); var xTimesFaster = 3; // Loading only the image info should be at least this factor faster then loading the full image string e = $"{timingForImageInfoOny} was not {xTimesFaster} times faster then {timingForFullImage}!"; Assert.True(timingForImageInfoOny.ElapsedMilliseconds * xTimesFaster < timingForFullImage.ElapsedMilliseconds, e); }