Andron
Andron

Reputation: 233

how get width and height of Image control

I want to change the size of my image in asp.net proportionally, the problem is that I can't get the actual size of the image which is loaded from database. here is the code:

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);

but the imgAvatar.Width.Value is always 0.0. what would you suggest to me?

Upvotes: 0

Views: 4728

Answers (2)

Bastardo
Bastardo

Reputation: 4152

Takes the size of the image with Bitmap and calls the below function to resize

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

Check BitMap class here Bitmap Class - MSDN Article

This code returns new size of the image, and image quality remains the same -no reduce-, FormatSize parameter decides the new size.

 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;
        } 

Upvotes: 0

user191966
user191966

Reputation:

Do not set width and height. The rendered IMG tag will be sized to the size of downloaded image.

However, if the image is too large you might have a problem. In that case, use CSS to set max:

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

I might have misunderstand the question, considering my answer above. Anyways, the way I see that done would be similar to this:

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

Upvotes: 1

Related Questions