一个页面加载图片太多的时候就很慢,需要用到缩略图,可以在图片上传的时候生成。

    Image对象已经包含了压缩图片的方法。

   所以过程很简单:

        [AcceptVerbs(HttpVerbs.Post)]
        public JsonResult Upload(HttpPostedFileBase fileData)
        {
            //.....
             var extension = Path.GetExtension(fileName);// 文件扩展名
                    if (extension != null)
                    {
                        string image = extension.ToLower();//System.IO.Path.GetExtension获得文件的扩展名
                        if (image == ".bmp" || image == ".png" || image == ".gif" || image == ".jpg")
                        {
                            //压缩。
                            var thumpath = filePath + "samll_" + fileName
                              GetThumbnail(savepath, thumpath, 150);
                        }
                    }
           //....
         }


        /// <summary>
        /// 按比例 存放缩略图片
        /// </summary>
        /// <param name="sourceFileName">原始地址</param>
        /// <param name="saveFileName">存放地址</param>
        /// <param name="width">宽度</param>
        public void GetThumbnail(string sourceFileName, string saveFileName, int width)
        {
             var iSource = Image.FromFile(sourceFileName);
            var height = width*iSource.Height/iSource.Width;
    var samllimg = iSource.GetThumbnailImage(width, height, null, IntPtr.Zero);
             samllimg.Save(saveFileName);
        }

       

 上传图片压缩+水印(文字、图片)+验证码

 160k 到 35k ,当然还可以更小。MSDN的对方法参数的解释:

 上传图片压缩+水印(文字、图片)+验证码

且缩略图默认

 园友的方法,可以调节清晰度。相对复杂些。

 public static bool GetPicThumbnail(string sFile, string outPath, int flag)
        {
            System.Drawing.Image iSource = System.Drawing.Image.FromFile(sFile);
            ImageFormat tFormat = iSource.RawFormat;

            //以下代码为保存图片时,设置压缩质量  
            EncoderParameters ep = new EncoderParameters();
            long[] qy = new long[1];
            qy[0] = flag;//设置压缩的比例1-100  
            EncoderParameter eParam = new EncoderParameter(System.Drawing.Imaging.Encoder.Quality, qy);
            ep.Param[0] = eParam;
            try
            {
                ImageCodecInfo[] arrayICI = ImageCodecInfo.GetImageEncoders();
                ImageCodecInfo jpegICIinfo = null;
                for (int x = 0; x < arrayICI.Length; x++)
                {
                    if (arrayICI[x].FormatDescription.Equals("JPEG"))
                    {
                        jpegICIinfo = arrayICI[x];
                        break;
                    }
                }
                if (jpegICIinfo != null)
                {
                    iSource.Save(outPath, jpegICIinfo, ep);//dFile是压缩后的新路径  
                }
                else
                {
                    iSource.Save(outPath, tFormat);
                }
                return true;
            }
            catch
            {
                return false;
            }
            finally
            {
                iSource.Dispose();
                iSource.Dispose();
            }
        }
View Code

相关文章:

猜你喜欢
相关资源
相似解决方案