Asp.Net 高清图片缩略图生成

来源:互联网 发布:不想找女朋友知乎 编辑:程序博客网 时间:2024/05/16 19:14

核心代码:

/// <summary>        /// 图片上传 生成缩略图        /// </summary>        /// <param name="files">文件上传控件</param>        /// <param name="path">文件夹名称</param>        /// <param name="fname">文件名称</param>        /// <param name="w">缩略图宽度</param>        /// <param name="h">缩略图高度</param>        public static void UploadImageThumbs(HttpPostedFile files, string filePath, string fname, int w, int h)        {            if (UtilsFile.IsOrNoFileUp(files) && fname.Equals(String.Empty) == false)            {                UtilsFile.DirectorysCreate(filePath);                Image image = Image.FromStream(files.InputStream, true);                //等比例缩放                if (w > 0 && h > 0)                {                    if (image.Width > image.Height)                    {                        if (image.Width > w)                            h = (int)(image.Height * ((decimal)w / image.Width));                        else                        {                            h = image.Height;                            w = image.Width;                        }                    }                    else                    {                        if (image.Height > h)                            w = (int)(image.Width * ((decimal)h / image.Height));                        else                        {                            h = image.Height;                            w = image.Width;                        }                    }                }                else if (w > 0 && h == 0)                {                    if (image.Width < w)                        w = image.Width;                    h = (int)(image.Height * ((decimal)w / image.Width));                }                else if (w == 0 && h > 0)                {                    if (image.Height < h)                        h = image.Height;                    w = (int)(image.Width * ((decimal)h / image.Height));                }                else                {                    w = image.Width;                    h = image.Height;                }                Bitmap ret = new Bitmap(w, h);                using (Graphics g = Graphics.FromImage(ret))                {                    g.InterpolationMode = System.Drawing.Drawing2D.InterpolationMode.HighQualityBicubic;                    g.FillRectangle(Brushes.White, 0, 0, w, h);                    g.DrawImage(image, 0, 0, w, h);                    EncoderParameters parms = new EncoderParameters();                    long[] quality = new long[1];                    quality[0] = 80;                    EncoderParameter parm = new EncoderParameter(System.Drawing.Imaging.Encoder.Quality, quality);                    parms.Param[0] = parm;                    ImageCodecInfo[] arr = ImageCodecInfo.GetImageEncoders();                    ImageCodecInfo ar = null;                    for (int x = 0; x < arr.Length; x++)                    {                        if (arr[x].FormatDescription.Equals("JPEG"))                        {                            ar = arr[x];                            break;                        }                    }                    ret.Save(filePath + fname, ar, parms);                    ret.Dispose();                    image.Dispose();                }            }        }

总结:以上生成缩略图代码,效果是比较好的,就是有时候红色的点会失真,比较无解。不过这问题基本可以忽略不计。较真的朋友,如有较好的生成代码,可以共享。

原谅转载:http://www.dyxue.com/tech/id2498.html


0 0
原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 舌苔厚黄是怎么回事且口臭怎么办 舌苔厚白是怎么回事且口臭怎么办 长期有舌苔白厚怎么办 小孩的舌苔厚白怎么办 口苦口臭舌苔黄怎么办 婴儿的舌苔厚白怎么办 舌苔黄厚口臭痒怎么办 想让月经提前来怎么办 宝宝拉肚子怎么办吃什么好 投资p2p跑路了怎么办 借钱不还怎么办最有效 朋友借小钱不还怎么办 网络上贷款不还怎么办 网贷实在还不了怎么办 娱乐平台跑路了怎么办 360借条被拒了怎么办 网贷注册太多了怎么办 汽车大绿本丢了怎么办 网贷平台跑路怎么办 电脑中了1kb病毒怎么办 360网页走丢了怎么办 被信和汇金起诉怎么办 qq号搜不到好友怎么办 gta5买的车炸了怎么办 ipad千牛缩小了怎么办 求生之路2卡顿怎么办 仙剑奇侠传1凤凰怎么办打 水温报警灯亮了怎么办 遇到拿刀的歹徒怎么办 微信公众号被骗怎么办 苹果ad账号忘了怎么办 苹果手机想换id怎么办 苹果6按键不会动怎么办 app充值不到账怎么办 卡被取款机吞了怎么办 建行atm机坏了怎么办 三星手机开不了机怎么办 苹果手机突然白屏了怎么办 dnf登陆无限闪退怎么办 美团外卖闪退怎么办 派得app登录不上怎么办