1

我需要一个允许我调整图像大小的代码,但具有以下功能:

1) 上传时调整图片大小

2) 通过指定高度或宽度来按比例调整图像大小。

笔记:

  • 应该在 ASP.NET C# 中完成

例如:该函数应获取宽度或高度,并根据给定高度或宽度按比例调整图像大小。假设图像是 400(w)x100(h)。我想告诉函数将图像调整到特定高度,比如 80px。该函数应按比例调整图像大小,同时将图像高度设置为 80px 并相应地设置宽度。另一种选择是告诉函数宽度,比如说 200px,函数应该将图像的大小调整为 200px 宽度并相应地设置高度。

3)将图像保存到特定位置(路径)。

4)功能可以使用上传的图像或通过指定图像路径。

5)我希望能够选择图像质量

6) JPEG 只需要这个

有人可以帮我解决这个问题。谢谢。

4

4 回答 4

5

昨天我发现了imageresizer和它的伟大。和良好的 API。效果很好。从 Visual Studio 2010 扩展管理器下载:http: //nuget.org/

在 VS-2010 中下载 API 的简单步骤:

1)。安装扩展http://nuget.org/

在此处输入图像描述

3)。查找并安装 ImageResizing
在此处输入图像描述

4)然后代码:(我在这里使用裁剪。你可以使用任何) imageresizing.net 上的文档

string uploadFolder = Server.MapPath(Request.ApplicationPath + "images/");
FileUpload1.SaveAs(uploadFolder + FileUpload1.FileName);


//The resizing settings can specify any of 30 commands.. See http://imageresizing.net for details.
ResizeSettings resizeCropSettings = new ResizeSettings("width=200&height=200&format=jpg&crop=auto");

//Generate a filename (GUIDs are safest).
string fileName = Path.Combine(uploadFolder, System.Guid.NewGuid().ToString());

//Let the image builder add the correct extension based on the output file type (which may differ).
fileName = ImageBuilder.Current.Build(uploadFolder + FileUpload1.FileName, fileName, resizeCropSettings, false, true);

尝试!!!它非常糟糕且易于使用。谢谢。

于 2011-11-17T07:22:19.313 回答
4

虽然看起来您应该能够复制和粘贴一个片段来执行此操作,但如果您正在构建自己的图像大小调整系统,则需要注意大量的陷阱。最好使用经过验证、测试和支持的开源库

要直接从 HttpPostedFile 调整文件大小,请调用

ImageBuilder.Current.Build(httpPostedFile, "img.jpg", new ResizeSettings("width=200&quality=90"));

要调整现有文件的大小,请调用

ImageBuilder.Current.Build("orig.jpg", "img.jpg", new ResizeSettings("width=200&quality=90"));

ImageResizing.Net库是免费的,并获得 MIT 许可(无需担心许可问题)。

于 2011-07-28T12:02:16.147 回答
3

取自这个 Stackoverflow答案,我想出了:

public static Image Resize(this Image image, int maxWidth = 0, int maxHeight = 0)
    {
        if (maxWidth == 0)
            maxWidth = image.Width;
        if (maxHeight == 0)
            maxHeight = image.Height;

        var ratioX = (double)maxWidth / image.Width;
        var ratioY = (double)maxHeight / image.Height;
        var ratio = Math.Min(ratioX, ratioY);

        var newWidth = (int)(image.Width * ratio);
        var newHeight = (int)(image.Height * ratio);

        var newImage = new Bitmap(newWidth, newHeight);
        Graphics.FromImage(newImage).DrawImage(image, 0, 0, newWidth, newHeight);
        return newImage;
    }

要调整图像的大小,指定其最大宽度:

var _image = Image.FromStream(Source);
var _thumbImage = _image.Resize(100);

要调整图像的大小,指定其 maxHeight:

var _image = Image.FromStream(Source);
var _thumbImage = _image.Resize(maxHeight: 100);
于 2013-01-05T08:31:05.290 回答
0

这就是我的项目中的做法

在上传文件时单击按钮:

System.Drawing.Bitmap bmpPostedImage = new System.Drawing.Bitmap(File1.PostedFile.InputStream);
     System.Drawing.Image objImage = ScaleImage(bmpPostedImage, 81);
     objImage.Save(SaveLocation,ImageFormat.Png);
     lblmsg.Text = "The file has been uploaded.";

public static System.Drawing.Image ScaleImage(System.Drawing.Image image, int maxHeight)
        {
            var ratio = (double)maxHeight / image.Height;
    
            var newWidth = (int)(image.Width * ratio);
            var newHeight = (int)(image.Height * ratio);
    
            var newImage = new Bitmap(newWidth, newHeight);
            using (var g = Graphics.FromImage(newImage))
            {
                g.DrawImage(image, 0, 0, newWidth, newHeight);
            }
            return newImage;
        }
于 2012-08-17T12:41:55.257 回答