×

C#处理大图片在缩略图时的展示

作者:商内在2018.04.10来源:Web前端之家浏览:14773评论:0
关键词:c#图片

500.jpg

今天在列表中展示图片,我发现一个问题:

每篇文章都会上传一些图片,我们列表缩略图是随机抽取第一张图片展示,但是我们每张图片都非常大,每张都是在1m以上,所以我对每个图片进行一下处理,下面是代码。

我们在展示图片的时候。不直接链接图片地址。而是链接一个处理图片的页面,比如:

<img src=”\imghandler.aspx?imgurl=xxxx”>

然后我们在imghandler页面来进行对图片的处理。代码如下:

public partial class _Default : System.Web.UI.Page
{
    protected void Page_Load(object sender, EventArgs e)
    {
        System.IO.MemoryStream ms = new System.IO.MemoryStream();
        GetReducedImage(253, 155).Save(ms, System.Drawing.Imaging.ImageFormat.Png);
        Response.ClearContent();
        Response.ContentType = "image/png";
        Response.BinaryWrite(ms.ToArray());
    }
    public System.Drawing.Image GetReducedImage(int Width, int Height)
    {
        string src = Server.MapPath("~/images/Still0403_00062.jpg");
        System.Drawing.Image ResourceImage = System.Drawing.Image.FromFile(src);
        try
        {
            //用指定的大小和格式初始化Bitmap类的新实例
            Bitmap bitmap = new Bitmap(Width, Height, PixelFormat.Format32bppArgb);
            //从指定的Image对象创建新Graphics对象
            Graphics graphics = Graphics.FromImage(bitmap);
            //清除整个绘图面并以透明背景色填充
            graphics.Clear(Color.Transparent);
            //在指定位置并且按指定大小绘制原图片对象
            graphics.DrawImage(ResourceImage, new Rectangle(0, 0, Width, Height));
            graphics.CompositingQuality = System.Drawing.Drawing2D.CompositingQuality.HighSpeed;
            return bitmap;
        }
        catch (Exception e)
        {
            return null;
        }
    }    
}

我们来看下这样处理过后的效果。如下:

图片1.png

这是直接引用的图片地址,大小是152823字节。

图片2.png

这是通过页面输出引用的图片。大小为99743字节,图片小了,自然加载速度就快了不少。好了,大家试试吧!

您的支持是我们创作的动力!
温馨提示:本文作者系商内在 ,经Web前端之家编辑修改或补充,转载请注明出处和本文链接:
https://www.jiangweishan.com/article/aspx2342352355435345.html

网友评论文明上网理性发言 已有0人参与

发表评论: