Как увеличить изображение до нормального размера в ASP.NET 2.0

  • Мои пользователи загружают изображение, и изображение сохраняется в моей базе данных сервера SQl.
  • Мои пользователи просматривают изображение на странице в обычном Image WebControl размером 150 на 150 пикселей — пример можно найти http://www.erate.co.za/CompanyProfile.aspx?ID=112 — флаг США — это изображение, о котором я говорю.

Если пользователь загрузит изображение размером 300 на 200 пикселей, изображение будет выглядеть забавно в моем статическом поле изображения размером 150 на 150 пикселей. Любая идея, как я могу отобразить изображение, чтобы оно не было нечетким?

Кроме того, как может быть какое-то всплывающее окно, которое будет отображаться на экране, показывая фактический размер изображения из базы данных, когда пользователь щелкает изображение размером 150 на 150 пикселей.

Примечание. Я не хочу, чтобы статический размер изображения увеличивался, так как это полностью испортит макет и внешний вид моей страницы. Это должно быть какое-то всплывающее окно или что-то в этом роде. Кое-что, что я видел прежде, я думаю, было действительно прохладно. Пользователь нажал на маленькое изображение, а затем в середине экрана появилось всплывающее окно с фактическим размером изображения, и все на странице было отключено, пока пользователь не нажал кнопку закрытия. Можно ли это сделать в ASP.NET 2.0? Или что-то подобное?

С уважением Этьен


person Etienne    schedule 10.03.2009    source источник


Ответы (2)


Используйте миниатюры фиксированной ширины/высоты.

Вы изменяете размер фактических изображений (сохраненных в базе данных) на лету.

Таким образом, размер вашего эскиза всегда составляет 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 в файловой системе веб-сервера, но его можно настроить для любых изображений/типов, хранящихся в файле db.

Муи бли.

Изменить: фиксированный формат изображения

person Konrad    schedule 10.03.2009

Посмотрите этот пример модального всплывающего окна;

http://www.asp.net/ajax/ajaxcontroltoolkit/samples/modalpopup/modalpopup.aspx

person Christopher McAtackney    schedule 10.03.2009
comment
Это может сработать... но теперь мне нужно будет отобразить исходный размер изображения. - person Etienne; 10.03.2009