Используйте миниатюры фиксированной ширины / высоты.
Вы изменяете размеры фактических изображений (как они хранятся в базе данных) на лету.
Таким образом, ваш размер thumnail всегда составляет 150 на 150 пикселей.
Фактические изображения (ширина / высота), хранящиеся в базе данных, могут отличаться.
Вы начинаете с показа списка уменьшенных миниатюр, отображающих полное изображение
во всплывающем окне при нажатии на значок миниатюры.
Код для «миниатюры» изображения:
byte[] getResizedImage(String path, int width, int height)
{
try
{
Bitmap imgIn = new Bitmap(path);
//Scale
double y = imgIn.Height;
double x = imgIn.Width;
double factor = 1;
if (width > 0)
{
factor = width / x;
}
else if (height > 0)
{
factor = height / y;
}
System.IO.MemoryStream outStream = new System.IO.MemoryStream();
Bitmap imgOut = new Bitmap((int)(x * factor), (int)(y * factor));
Graphics g = Graphics.FromImage(imgOut);
g.Clear(Color.White);
g.DrawImage(imgIn, new Rectangle(0, 0, (int)(factor * x), (int)(factor * y)), new Rectangle(0, 0, (int)x, (int)y), GraphicsUnit.Pixel);
imgOut.Save(outStream, ImageFormat.Jpeg);
return outStream.ToArray();
}
catch (Exception)
{
...
}
}
В этом примере используется изображение .jpg в файловой системе веб-сервера, но его можно настроить для обслуживания любых изображений / типов, хранящихся в БД.
Mooi Bly.
Edit:
Исправлено ImageFormat