如何获得Image控件的宽度和高度

时间:2012-02-09 11:18:11

标签: asp.net image image-resizing

我想按比例更改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 个答案:

答案 0 :(得分:1)

不要设置宽度和高度。渲染的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

答案 1 :(得分:0)

使用Bitmap获取图像的大小并调用以下函数来调整大小

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 Class - MSDN Article

此代码返回图像的新大小,图像质量保持不变 - 无reduce-,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;
        }