将图像大小调整为特定宽度并固定高度

时间:2012-08-18 07:35:44

标签: c# asp.net

我想调整大图像的大小,使其宽度为150像素,高度将固定。 然后将图像保存到我网站的文件夹中。

示例:(宽度,高度) 如果我调整300px * 300px的图像大小,我将获得150px * 150px的调整大小的图像。 如果我调整图像450px * 300px的大小,我将获得150px * 100px的调整大小的图像。

重点是宽度和高度之间的比率将始终保持150像素的宽度。

任何帮助?

2 个答案:

答案 0 :(得分:2)

我发现了这个(不是我的)here

private Bitmap ScaleImage(Image oldImage)
{
    double resizeFactor = 1;

    if (oldImage.Width > 150 || oldImage.Height > 150)
    {
        double widthFactor = Convert.ToDouble(oldImage.Width) / 150;
        double heightFactor = Convert.ToDouble(oldImage.Height) / 150;
        resizeFactor = Math.Max(widthFactor, heightFactor);

    }
    int width = Convert.ToInt32(oldImage.Width / resizeFactor);
    int height = Convert.ToInt32(oldImage.Height / resizeFactor);
    Bitmap newImage = new Bitmap(width, height);
    Graphics g = Graphics.FromImage(newImage);
    g.InterpolationMode = System.Drawing.Drawing2D.InterpolationMode.HighQualityBicubic;
    g.DrawImage(oldImage, 0, 0, newImage.Width, newImage.Height);
    return newImage;
}

答案 1 :(得分:0)

您可以使用样式表来完成此操作。首先,定义以下样式:

.thumb {
  max-width: 150px;
  max-height: 150px;
  width: expression(this.width > 150 ? "150px" : true);
  height: expression(this.height > 150 ? "150px" : true);
}

然后,将此样式添加到图像标记中,如下所示:

<img class="thumb" ...>

这次不要包含高度和宽度元素。

该风格的前半部分适用于支持max-width和max-height属性的浏览器 - Chrome,Firefox,Opera和Safari。下半部分是IE的黑客攻击,但不是。

以下是一个示例:jsFiddle