как получить ширину и высоту управления изображением - PullRequest
0 голосов
/ 09 февраля 2012

Я хочу пропорционально изменить размер моего изображения в asp.net, проблема в том, что я не могу получить фактический размер изображения, загруженного из базы данных. вот код:

imgAvatar.ImageUrl = "~/Modules/FileViewer.ashx?id=" + o.EventID;                      
        double r = imgAvatar.Width.Value / 300.00;
        imgAvatar.Width = new Unit(300, UnitType.Pixel);
        imgAvatar.Height = new Unit(imgAvatar.Height.Value / r, UnitType.Pixel);

но imgAvatar.Width.Value всегда равно 0.0. что бы вы мне посоветовали?

Ответы [ 2 ]

1 голос
/ 09 февраля 2012

Не задавайте ширину и высоту. Размер отображаемого тега IMG будет соответствовать размеру загружаемого изображения.

Однако, если изображение слишком большое, у вас может быть проблема. В этом случае используйте CSS для установки max:

max-width: 300px;
max-height: 300px;

Возможно, я неправильно понял вопрос, учитывая мой ответ выше. В любом случае, способ, которым я вижу, что будет сделано, будет похож на это:

System.Drawing.Image image = System.Drawing.Image.FromFile(this.Server.MapUrl("~/image path here"));

// sorry if the above line doesn't compile; writing from memory, use intellisense to find these classes/methods

// image.Width and image.Height will work here
0 голосов
/ 09 февраля 2012

Принимает размер изображения с помощью растрового изображения и вызывает приведенную ниже функцию для изменения размера

Bitmap myBitmap;
string fileName = "foreverAlone.jpg";
myBitmap = new Bitmap(fileName);

Size newSize = NewImageSize(myBitmap.Height, myBitmap.Width, 100);//myBitMap.Height and myBitMap.Width is how you take the original size

Проверьте класс BitMap здесь Класс Bitmap - статья MSDN

Этот код возвращает новый размер изображения, а качество изображения остается неизменным -no Redu-, параметр FormatSize определяет новый размер.

 public Size NewImageSize(int OriginalHeight, int OriginalWidth, double FormatSize)
        {
            Size NewSize;
            double tempval;

            if (OriginalHeight > FormatSize && OriginalWidth > FormatSize)
            {
                if (OriginalHeight > OriginalWidth)
                    tempval = FormatSize / Convert.ToDouble(OriginalHeight);
                else
                    tempval = FormatSize / Convert.ToDouble(OriginalWidth);

                NewSize = new Size(Convert.ToInt32(tempval * OriginalWidth), Convert.ToInt32(tempval * OriginalHeight));
            }
            else
                NewSize = new Size(OriginalWidth, OriginalHeight); 

            return NewSize;
        } 
...