从URL图像动态生成缩略图

本文关键字:略图 动态 URL 图像 | 更新日期: 2023-09-27 18:13:09

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

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

谢谢。

从URL图像动态生成缩略图

不使用.aspx文件,而是使用通用处理程序文件(.ashx)。这意味着您只需要1个文件(没有标记文件),因此它更简洁,更快捷。毕竟,你不是在生成一个web表单,所以.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);

Where width &heightinteger值,ImageURL为本地URI字符串

我不会在HTML/CSS中使用宽度/高度属性调整图像的大小。这意味着你正在发送完整尺寸的图像给客户端,浪费了每个人的带宽和时间!此外,当HTML调整它的大小时,它通常会做一个拙劣的扭曲工作。


附带说明一下,我过去经常生成这样的动态缩略图,但是由于每次发出HTTP请求时都要调整图像的大小,因此性能受到损害。

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

您在正确的轨道上:我曾经做过类似的事情,只使用了http处理程序(ashx)。在这里,你可以使用Image类来加载。jpg并调整大小并返回。

不要忘记限制处理程序只能调整您域上的图像大小,否则它可能会变得相当危险(容易受到dos攻击)。