The alternative to downloading the entire image and not storing a supplementary thumbnail would be to generate a thumbnail on the fly on the server. This would be expensive. At a guess I suspect what you actually mean is you don't want to have require the provider of the images to have to provide two images. One would imagine that haveing generated a thumbnail keeping that copy for future use would be acceptable.
Here is a chunk of code I use server-side to scale an image down:-
private Bitmap ScaleImage(Image img, int divisor)
{
int toWidth = Math.Max(img.Width / divisor, 1);
int toHeight = Math.Max(img.Height / divisor, 1);
Bitmap result = new Bitmap(toWidth, toHeight);
using (Graphics canvas = Graphics.FromImage(result))
{
canvas.DrawImage(img, 0, 0, toWidth, toHeight);
}
return result;
}
You can then same the return image to some BLOB stream with:-
img.Save(someStream, ImageFormat.Jpeg);