我想按比例更改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。
你会对我建议什么?
答案 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;
}