如何在保存之前从远程URL调整图像大小

时间:2014-08-20 14:10:35

标签: c# image resolution

这是我保存图片的代码。代码工作正常,我没有问题。

Guid id = Guid.NewGuid();      

string strRealname = Path.GetFileName(ImageUrl);
string exts = Path.GetExtension(ImageUrl);

WebClient webClient = new WebClient();
webClient.DownloadFile(ImageUrl, Server.MapPath("~/Images/") + id + exts);

我希望能够根据我的SET尺寸保存图像。例如:我下载的图片是600x300。我想保留原始尺寸(2:1)并将其保存为400x200。我怎么能这样做?

编辑:也许我应该强调这一点。我不想保存来自URl的原始图像。一些图像的宽度或高度超过1000像素。我想在保存之前缩减这个。这将完成1000个图像,我不希望我的服务器耗尽磁盘空间。

1 个答案:

答案 0 :(得分:3)

有很多方法可以做到这一点,但最简单的方法可能是使用GDI +和Graphics类。

不是下载文件,而是使用Bitmap.FromStream下载流并使用该文件创建一个Bitmap对象。

然后使用您想要的尺寸创建一个新的位图,并使用Graphics.FromImage创建一个将绘制到该图像的Graphics对象。

最后使用Graphics.DrawImage将下载的图像绘制到新图像。将调整大小后的图像的尺寸传递给方法,您将获得一个Bitmap对象,其中包含已准备好写入磁盘的已调整大小的图像。

注意:我目前无法设置完整的示例,但这应该足以让您对其进行排序。