Exemplo n.º 1
0
 public ImageParameter Fix(ImageParameter parameter)
 {
     parameter.Guid  = Guid.Parse(parameter.Id);
     parameter.Year  = parameter.YearMonth / 100;
     parameter.Month = parameter.YearMonth % 100;
     if (parameter.Year < 2014 || parameter.Year > DateTime.Now.Year + 1 || parameter.Month < 1 || parameter.Month > 12)
     {
         throw new Exception("错误的年月格式");
     }
     parameter.ImageFormat = ("." + parameter.Format).GetImageFormat();
     return(parameter);
 }
 public ImageParameter Fix(ImageParameter parameter)
 {
     parameter.Guid = Guid.Parse(parameter.Id);
     parameter.Year = parameter.YearMonth / 100;
     parameter.Month = parameter.YearMonth % 100;
     if (parameter.Year < 2014 || parameter.Year > DateTime.Now.Year + 1 || parameter.Month < 1 || parameter.Month > 12)
     {
         throw new Exception("错误的年月格式");
     }
     parameter.ImageFormat = ("." + parameter.Format).GetImageFormat();
     return parameter;
 }
Exemplo n.º 3
0
        public FilePathResult Index(ImageParameter parameter)
        {
            if (parameter == null)
            {
                return File(Server.MapPath("~/_storage/css/404.png"), "image/png");
            }
            parameter = parameter.GetFixed(new DefaultImageParameterFixer());
            var physicalPath = Server.MapPath(parameter.GetRelativePath());
            var contentType = "image/" + parameter.Format;

            lock (string.Intern(physicalPath))
            {
                if (System.IO.File.Exists(physicalPath))
                {
                    Response.AddHeader("ETag", "0");
                    Response.AddHeader("Last-Modified", "Thu, 01 Oct 2015 12:07:58 GMT");
                    Response.AddHeader("Cache-Control", "public");
                    return File(physicalPath, contentType);
                }
                var physicalFolder = Path.GetDirectoryName(physicalPath);
                IoHelper.CreateDirectoryIfNotExists(physicalFolder);
                var service = Ioc.Get<IImageService>();
                var originalPath = service.GetOriginalPath(parameter.Guid);
                if (string.IsNullOrEmpty(originalPath))
                {
                    return null;
                }

                var originalFile = Server.MapPath(originalPath);
                if (!System.IO.File.Exists(originalFile))
                {
                    return null;
                }
                using (var sysImage = System.Drawing.Image.FromFile(originalFile))
                {
                    if (parameter.ImageFormat == ImageFormat.Gif)
                    {
                        sysImage.Save(physicalPath, ImageFormat.Gif);
                    }
                    else
                    {
                        using (var sizedImage = sysImage.ToSize(parameter.Size.GetSize()))
                        {
                            sizedImage.SaveToFileInQuality(physicalPath, parameter.ImageFormat);
                        }
                    }
                }
            }
            return File(physicalPath, contentType);
        }