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

时间:2011-11-03 14:59:11

标签: c# asp.net image url thumbnails

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

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

感谢。

2 个答案:

答案 0 :(得分:1)

使用Generic Handler文件(.aspx),而不是使用.ashx文件。这意味着您只需要1个文件(没有标记文件),因此它更整洁,更快一点。毕竟,您没有生成网络表单,因此.aspx文件不是您所追求的。

您可以使用System.Drawing.Graphics.DrawImage()制作缩略图。

这样简单的事情会起作用:

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&amp; heightinteger个值,ImageURL为本地URI字符串

我不会使用HTML / CSS中的width / height属性调整图像大小。这意味着您要向客户端发送全尺寸图像,浪费每个人的带宽和时间!此外,当HTML调整大小时,它通常会做一个伪劣的扭曲工作。


另一方面,我过去常常生成像这样的动态缩略图,但是在每次发出HTTP请求时都会调整图像大小,从而导致性能受到影响。

因此,无论何时上传主图像,我都会将缩略图保存到物理位置,并在我的HTML中调用它。

答案 1 :(得分:1)

你走在正确的轨道上:我做了一次这样的事情,只使用了HTTP-Handler(ashx)。在那里你可以使用Image类加载.jpg并调整大小并返回它。

请勿忘记将处理程序重新设置为仅调整域中的图像大小,否则可能会非常危险(容易发生DOS攻击)。