public ActionResult EditaFormatiRidimensiona(int id, int formatoImmagineID, int w, int h) { ActionResult result = null; Immagine immagineMaster = null; immagineMaster = ImmagineRepository.Instance.RecuperaImmagine(id); if (immagineMaster != null) { FormatoImmagine formato = FormatoImmagineRepository.Instance.RecuperaFormatoImmagine(formatoImmagineID); Immagine immagine = null; immagine = ImmagineRepository.Instance.RecuperaImmaginiFiglio(immagineMaster.ID).FirstOrDefault(x => x.FormatoImmagine.ID == formato.ID); Bitmap immagineLavoro = null; Bitmap immagineRidimensionata = null; Graphics grpImmagineRidimensionata = null; Rectangle rettangoloRidimensionata; immagineLavoro = new Bitmap(FileUtility.VAImmagineLavoro(immagineMaster.NomeFile)); rettangoloRidimensionata = new Rectangle(0, 0, w, h); immagineRidimensionata = new Bitmap(w, h); grpImmagineRidimensionata = Graphics.FromImage((System.Drawing.Image)immagineRidimensionata); grpImmagineRidimensionata.CompositingQuality = System.Drawing.Drawing2D.CompositingQuality.HighQuality; grpImmagineRidimensionata.SmoothingMode = System.Drawing.Drawing2D.SmoothingMode.HighQuality; grpImmagineRidimensionata.InterpolationMode = System.Drawing.Drawing2D.InterpolationMode.HighQualityBicubic; grpImmagineRidimensionata.DrawImage((System.Drawing.Image)immagineLavoro, rettangoloRidimensionata); grpImmagineRidimensionata.Dispose(); string ext = System.IO.Path.GetExtension(FileUtility.VAImmagine(formato.Enum, immagineMaster.NomeFile)).ToLower(); switch (ext) { case ".jpeg": case ".jpg": immagineRidimensionata.Save(FileUtility.VAImmagine(formato.Enum, immagineMaster.NomeFile), immagineLavoro.RawFormat); break; case ".gif": immagineRidimensionata.Save(FileUtility.VAImmagine(formato.Enum, immagineMaster.NomeFile), immagineLavoro.RawFormat); break; case ".png": immagineRidimensionata.Save(FileUtility.VAImmagine(formato.Enum, immagineMaster.NomeFile), immagineLavoro.RawFormat); break; case ".bmp": immagineRidimensionata.Save(FileUtility.VAImmagine(formato.Enum, immagineMaster.NomeFile), immagineLavoro.RawFormat); break; default: throw new ApplicationException("Formato immagine non supportato: " + ext); } immagineLavoro.Dispose(); ContenutoService cs = new ContenutoService(); if (immagine != null) { immagine.NomeFile = immagineMaster.NomeFile; } else { immagine = cs.CreaImmagine(immagineMaster, formato, immagineMaster.NomeFile); } immagine.Larghezza = immagineRidimensionata.Width; immagine.Altezza = immagineRidimensionata.Height; immagineRidimensionata.Dispose(); cs.SalvaImmagine(immagine); result = RedirectToAction("EditaFormati", new { id = immagineMaster.ID, formatoImmagineID = formato.ID }); } else { result = RedirectToAction("Index"); } return(result); }
public ActionResult EditaFormatiTaglia(int id, int formatoImmagineID, int x1 = 0, int y1 = 0, int x2 = 0, int y2 = 0, int w = 0, int h = 0) { ActionResult result = null; Immagine immagineMaster = null; immagineMaster = ImmagineRepository.Instance.RecuperaImmagine(id); if (immagineMaster != null) { FormatoImmagine formato = FormatoImmagineRepository.Instance.RecuperaFormatoImmagine(formatoImmagineID); Immagine immagine = null; immagine = ImmagineRepository.Instance.RecuperaImmaginiFiglio(immagineMaster.ID).FirstOrDefault(x => x.FormatoImmagine.ID == formato.ID); Bitmap immagineLavoro = null; ImageFormat format = null; Bitmap immagineRisultato = null; immagineLavoro = new Bitmap(FileUtility.VAImmagineLavoro(immagineMaster.NomeFile)); format = immagineLavoro.RawFormat; immagineRisultato = ImageHelper.Ritaglia(immagineLavoro, x1, y1, x2, y2); if (immagineRisultato != null) { immagineLavoro.Dispose(); immagineLavoro = immagineRisultato; } immagineRisultato = ImageHelper.Ridimensiona(immagineLavoro, w, h); if (immagineRisultato != null) { immagineLavoro.Dispose(); } else { immagineRisultato = immagineLavoro; } immagineLavoro = null; string ext = System.IO.Path.GetExtension(FileUtility.VAImmagine(formato.Enum, immagineMaster.NomeFile)).ToLower(); switch (ext) { case ".jpeg": case ".jpg": immagineRisultato.Save(FileUtility.VAImmagine(formato.Enum, immagineMaster.NomeFile), format); break; case ".gif": immagineRisultato.Save(FileUtility.VAImmagine(formato.Enum, immagineMaster.NomeFile), format); break; case ".png": immagineRisultato.Save(FileUtility.VAImmagine(formato.Enum, immagineMaster.NomeFile), format); break; case ".bmp": immagineRisultato.Save(FileUtility.VAImmagine(formato.Enum, immagineMaster.NomeFile), format); break; default: throw new ApplicationException("Formato immagine non supportato: " + ext); } ContenutoService cs = new ContenutoService(); if (immagine != null) { immagine.NomeFile = immagineMaster.NomeFile; } else { immagine = cs.CreaImmagine(immagineMaster, formato, immagineMaster.NomeFile); } immagine.Larghezza = immagineRisultato.Width; immagine.Altezza = immagineRisultato.Height; immagineRisultato.Dispose(); cs.SalvaImmagine(immagine); result = RedirectToAction("EditaFormati", new { id = immagineMaster.ID, formatoImmagineID = formato.ID }); } else { result = RedirectToAction("Index"); } return(result); }