Альтернативой загрузке всего изображения и без сохранения дополнительной миниатюры может быть создание миниатюрной копии на лету на сервере. Это было бы дорого. По-моему, я подозреваю, что вы на самом деле имеете в виду, что вы не хотите, чтобы поставщик изображений предоставил два изображения. Можно было бы предположить, что создание миниатюры с сохранением этой копии для будущего использования будет приемлемым.
Вот фрагмент кода, который я использую на стороне сервера для уменьшения изображения: -
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;
}
Затем вы можете вернуть изображение в некоторый BLOB-поток с помощью: -
img.Save(someStream, ImageFormat.Jpeg);