在c#中重新调整图像大小并不起作用

时间:2014-05-02 08:19:05

标签: c# bitmap

我正在尝试将图片大小调整为width=100 height=100

public ActionResult RegisterUser(userAuthModel user, HttpPostedFileBase userimage)
{
    if (userimage.ContentLength > 0 && userimage != null)
    {
        string fname = userimage.FileName;
        var path = Server.MapPath("~/Images/User_DP/" + userimage.FileName);
        var image_100 = new System.Drawing.Bitmap(userimage, new Size(100, 100));
        userimage.SaveAs(path);

    }
    .
    .
    .
    .
    .
}

这里我使用位图方法将imgae调整到某个特定的宽度和高度。

但这显示我的错误 -

var image_100 = new System.Drawing.Bitmap(userimage, new Size(100, 100));

无效参数。如何使用位图调整图像大小?

2 个答案:

答案 0 :(得分:0)

你必须使用提到的方法,它可以帮助你

private static BitmapFrame CreateResizedImage(ImageSource source, int width, int height, int margin)
{

    var rect = new Rect(margin, margin, width - margin * 2, height - margin * 2);

    var group = new DrawingGroup();
    RenderOptions.SetBitmapScalingMode(group, BitmapScalingMode.HighQuality);
    group.Children.Add(new ImageDrawing(source, rect));

    var drawingVisual = new DrawingVisual();
    using (var drawingContext = drawingVisual.RenderOpen())
        drawingContext.DrawDrawing(group);

    var resizedImage = new RenderTargetBitmap(
        width, height,         // Resized dimensions
        96, 96,                // Default DPI values
        PixelFormats.Default); // Default pixel format
    resizedImage.Render(drawingVisual);

    return BitmapFrame.Create(resizedImage);
}

答案 1 :(得分:0)

System.Drawing.Bitmap类要求您使用的构造函数中的两个参数:

System.Drawing.Image
System.Drawing.Size

在您的代码中,您正确传递大小,但不是图像。 HttpPostedFileBase不会扩展Image类。

您需要更改代码的这一部分。如果您使用HttpPostedFileBase作为流,请注意System.Drawing.Bitmap没有构造函数要求StreamSize

参考文献:

System.Drawing.Image

System.Web.HttpPostedFileBase