C# 从URL图像动态生成缩略图图像

C# 从URL图像动态生成缩略图图像,c#,asp.net,image,url,thumbnails,C#,Asp.net,Image,Url,Thumbnails,我想知道是否有人有一些代码/有用的链接来解释我如何做到这一点。 我很可能会这样使用它: <img src="ShowThumb.aspx?image=http://the_image.jpg" alt="" /> 谢谢。不要使用.aspx文件,而是使用通用处理程序文件(.ashx)。这意味着您只需要1文件(无标记文件),因此它更整洁、更快。毕竟,您并没有生成web表单,所以.aspx文件不是您想要的 您可以使用生成缩略图 像这样简单的方法会奏效: Bitmap bmpOut =

我想知道是否有人有一些代码/有用的链接来解释我如何做到这一点。 我很可能会这样使用它:

<img src="ShowThumb.aspx?image=http://the_image.jpg" alt="" />


谢谢。

不要使用
.aspx
文件,而是使用通用处理程序文件(
.ashx
)。这意味着您只需要1文件(无标记文件),因此它更整洁、更快。毕竟,您并没有生成web表单,所以
.aspx
文件不是您想要的

您可以使用生成缩略图

像这样简单的方法会奏效:

Bitmap bmpOut = new Bitmap(width, height);
Bitmap B = new Bitmap(context.Server.MapPath(ImageURL));

Graphics g = Graphics.FromImage(bmpOut);
g.InterpolationMode = InterpolationMode.High;
g.DrawImage(B, 0, 0, width, height);


context.Response.ContentType = "image/PNG";
MemoryStream MemStream = new MemoryStream();
B.Save(MemStream, System.Drawing.Imaging.ImageFormat.Png);

B.Dispose();

MemStream.WriteTo(HttpContext.Current.Response.OutputStream);
其中
width
height
integer
值,
ImageURL
是本地URI字符串

我不会使用HTML/CSS中的宽度/高度属性调整图像大小。这意味着您正在向客户端发送全尺寸图像,浪费了每个人的带宽和时间!此外,当HTML调整它的大小时,它通常会对它进行劣质的扭曲处理


另一方面,我过去常常像这样动态生成缩略图,但在每次HTTP请求时调整图像大小时,性能会受到影响


因此,每当上传主图像时,我都会将缩略图保存到一个物理位置,并在HTML中调用它。

你说得对:我做过一次类似的事情,只使用了HTTP处理程序(ashx)。在那里,您可以使用Image类加载.jpg并调整大小并返回它


别忘了重新设置处理程序,使其仅调整域上的图像大小,否则可能会非常危险(容易遭到拒绝服务攻击)。

其中包括几个步骤。你对哪一部分有问题?你在找什么?我找到了这个:,我能找到的是工作。但是我如何修改它,使我不必首先将图像保存为本地文件?@Tenza-请查看我的答案。它将其保存到内存流中,因此无需将其保存为本地文件。如果你有什么不明白的地方,请告诉我。是否可以使用类似这样的东西,而不必将图像保存为本地文件,而是直接从源代码中以流的形式获取它?是的,这正是这段代码所做的。它将它保存到内存流中,考虑到您的经验,也许使用某种web服务会更好,因为我不会花费空间或处理。@Tenza-我不确定web服务会有什么好处?就个人而言,我喜欢在Image类(位图继承自)上使用该方法。更方便,虽然我相信它总是使用JPEG编码,而且你不能设置质量。