Как увеличить изображение до нормального размера в ASP.NET 2.0 - PullRequest
0 голосов
/ 10 марта 2009
  • Мои пользователи загружают изображение, и изображение сохраняется в моей базе данных SQl Server
  • Мои пользователи просматривают изображение на странице в обычном веб-контроле изображений с размером 150 на 150 пикселей - пример можно найти http://www.erate.co.za/CompanyProfile.aspx?ID=112 - флаг США - это изображение, о котором я говорю.

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

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

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

С уважением Etienne

Ответы [ 2 ]

1 голос
/ 10 марта 2009

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

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

Таким образом, ваш размер 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

0 голосов
/ 10 марта 2009

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

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

...