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; }
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); }