c# asp.net-mvc-4 file-upload razor image-resizing

Cómo cambiar el tamaño y guardar una imagen que se cargó usando el control de carga de archivos en c#



asp.net-mvc-4 file-upload (1)

Es muy difícil entender cuál es el problema con tu código. Pero puede ser que quieras usar una forma alternativa. Debe agregar la referencia al espacio de nombres System.Web.Helpers y probar el siguiente código.

[HttpPost] public ActionResult Index(HttpPostedFileBase file) { WebImage img = new WebImage(file.InputStream); if (img.Width > 1000) img.Resize(1000, 1000); img.Save("path"); return View(); }

También esta clase admite la operación de recorte, inversión, marca de agua, etc.

He desarrollado una aplicación web usando asp.net mvc4 y navaja de afeitar. en mi aplicación hay un control de carga de archivos para cargar una imagen y guardarla en una ubicación temporal.

antes de guardar la imagen debe cambiar el tamaño a un tamaño específico y luego guardar en la ubicación temporal dada.

aquí está el código que he usado en la clase de controlador.

public class FileUploadController : Controller { // // GET: /FileUpload/ public ActionResult Index() { return View(); } public ActionResult FileUpload() { return View(); } [AcceptVerbs(HttpVerbs.Post)] public ActionResult FileUpload(HttpPostedFileBase uploadFile) { if (uploadFile.ContentLength > 0) { string relativePath = "~/img/" + Path.GetFileName(uploadFile.FileName); string physicalPath = Server.MapPath(relativePath); FileUploadModel.ResizeAndSave(relativePath, uploadFile.FileName, uploadFile.InputStream, uploadFile.ContentLength, true); return View((object)relativePath); } return View(); } }

y aquí está el código usado en la clase de modelo

public class FileUploadModel { [Required] public HttpPostedFileWrapper ImageUploaded { get; set; } public static void ResizeAndSave(string savePath, string fileName, Stream imageBuffer, int maxSideSize, bool makeItSquare) { int newWidth; int newHeight; Image image = Image.FromStream(imageBuffer); int oldWidth = image.Width; int oldHeight = image.Height; Bitmap newImage; if (makeItSquare) { int smallerSide = oldWidth >= oldHeight ? oldHeight : oldWidth; double coeficient = maxSideSize / (double)smallerSide; newWidth = Convert.ToInt32(coeficient * oldWidth); newHeight = Convert.ToInt32(coeficient * oldHeight); Bitmap tempImage = new Bitmap(image, newWidth, newHeight); int cropX = (newWidth - maxSideSize) / 2; int cropY = (newHeight - maxSideSize) / 2; newImage = new Bitmap(maxSideSize, maxSideSize); Graphics tempGraphic = Graphics.FromImage(newImage); tempGraphic.SmoothingMode = SmoothingMode.AntiAlias; tempGraphic.InterpolationMode = InterpolationMode.HighQualityBicubic; tempGraphic.PixelOffsetMode = PixelOffsetMode.HighQuality; tempGraphic.DrawImage(tempImage, new Rectangle(0, 0, maxSideSize, maxSideSize), cropX, cropY, maxSideSize, maxSideSize, GraphicsUnit.Pixel); } else { int maxSide = oldWidth >= oldHeight ? oldWidth : oldHeight; if (maxSide > maxSideSize) { double coeficient = maxSideSize / (double)maxSide; newWidth = Convert.ToInt32(coeficient * oldWidth); newHeight = Convert.ToInt32(coeficient * oldHeight); } else { newWidth = oldWidth; newHeight = oldHeight; } newImage = new Bitmap(image, newWidth, newHeight); } newImage.Save(savePath + fileName + ".jpg", ImageFormat.Jpeg); image.Dispose(); newImage.Dispose(); } }

pero cuando ejecuto la aplicación, se produce una ArgumentException .

dice "El parámetro no es válido" en la siguiente línea de código

Bitmap tempImage = new Bitmap(image, newWidth, newHeight);

¿Cómo paso parámetros válidos y apropiados aquí?

public static void ResizeAndSave(string savePath, string fileName, Stream imageBuffer, int maxSideSize, bool makeItSquare)