博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
(转)asp.net 高质量缩略图
阅读量:6995 次
发布时间:2019-06-27

本文共 2860 字,大约阅读时间需要 9 分钟。

原文地址:

using System.Drawing;

------------------------------

调用:  MakeThumbnail("C:\\sdf.JPG", "C:\\sdfsss.JPG", 300, 40, "W");

 

复制代码 //****************************************************************************************生成缩略图    ///     /// 生成缩略图    ///     /// 源图路径(物理路径)    /// 缩略图路径(物理路径)    /// 缩略图宽度    /// 缩略图高度    /// 生成缩略图的方式        public static void MakeThumbnail(string originalImagePath, string thumbnailPath, int width, int height, string mode)    {        System.Drawing.Image originalImage = System.Drawing.Image.FromFile(originalImagePath);        int towidth = width;        int toheight = height;        int x = 0;        int y = 0;        int ow = originalImage.Width;        int oh = originalImage.Height;        switch (mode)        {            case "HW"://指定高宽缩放(可能变形)                                break;            case "W"://指定宽,高按比例                                    toheight = originalImage.Height * width / originalImage.Width;                break;            case "H"://指定高,宽按比例                towidth = originalImage.Width * height / originalImage.Height;                break;            case "Cut"://指定高宽裁减(不变形)                                if ((double)originalImage.Width / (double)originalImage.Height > (double)towidth / (double)toheight)                {                    oh = originalImage.Height;                    ow = originalImage.Height * towidth / toheight;                    y = 0;                    x = (originalImage.Width - ow) / 2;                }                else                {                    ow = originalImage.Width;                    oh = originalImage.Width * height / towidth;                    x = 0;                    y = (originalImage.Height - oh) / 2;                }                break;            default:                break;        }        //新建一个bmp图片        System.Drawing.Image bitmap = new System.Drawing.Bitmap(towidth, toheight);        //新建一个画板        Graphics g = System.Drawing.Graphics.FromImage(bitmap);        //设置高质量插值法        g.InterpolationMode = System.Drawing.Drawing2D.InterpolationMode.High;        //设置高质量,低速度呈现平滑程度        g.SmoothingMode = System.Drawing.Drawing2D.SmoothingMode.HighQuality;        //清空画布并以透明背景色填充        g.Clear(Color.Transparent);        //在指定位置并且按指定大小绘制原图片的指定部分        g.DrawImage(originalImage, new System.Drawing.Rectangle(0, 0, towidth, toheight),            new System.Drawing.Rectangle(x, y, ow, oh),            GraphicsUnit.Pixel);        try        {            //以jpg格式保存缩略图            bitmap.Save(thumbnailPath, System.Drawing.Imaging.ImageFormat.Jpeg);        }        catch (System.Exception e)        {            throw e;        }        finally        {            originalImage.Dispose();            bitmap.Dispose();            g.Dispose();        }    }复制代码

 

转载于:https://www.cnblogs.com/the-three/p/3472263.html

你可能感兴趣的文章