private async Task SaveImage(Image img, ImageSaveLocationEnum imageLocation, string fileName = "", ImageSizeEnum saveMaxSizes = ImageSizeEnum.ImgOriginal) { decimal proportion = decimal.Divide(img.Size().Height, img.Size().Width);//hecho así para mejorar la precisión //si la proporción es mayor a 2:1 no hacer conversión ya que se la imagen se distorsionará if (proportion > 2) { proportion = 1; } // Format is automatically detected though can be changed. //ISupportedImageFormat format = new JpegFormat { Quality = 90 }; var imageSizes = Enum.GetValues(typeof(ImageSizeEnum)).Cast <ImageSizeEnum>(); if (saveMaxSizes == ImageSizeEnum.WithoutMark || saveMaxSizes == ImageSizeEnum.ImgOriginal) { saveMaxSizes = ImageSizeEnum.ImgOriginal; } imageSizes = imageSizes.SkipWhile(a => a != saveMaxSizes); foreach (var i in imageSizes) { int enumSize = (int)i.GetDefaultValue(); Size size = new Size(enumSize, (int)(enumSize * proportion)); // Initialize the ImageFactory using the overload to preserve EXIF metadata. var returnImageUrl = imageLocation.GetDescription() + fileName + "_" + enumSize + ".jpg"; var path = Path.Combine(_env.WebRootPath, returnImageUrl); if (!size.Equals(default))
public GetImagePathQuery(string fileName, ImageSaveLocationEnum imageLocation, ImageSizeEnum imgSize = ImageSizeEnum.ImgOriginal, bool returnEmptyIfNotFound = false, bool returnMainLogoIfEmpty = false) { FileName = fileName; ImageLocation = imageLocation; ImgSize = imgSize; ReturnEmptyIfNotFound = returnEmptyIfNotFound; ReturnMainLogoIfEmpty = returnMainLogoIfEmpty; }
/// <summary> /// Helper para guardar las imágenes con distintos tamaños, utilizando GetImagePath se puede pedir el tamaño específico para la página /// </summary> /// <param name="base64Image">La imagen en base64</param> /// <param name="imageLocation">Enumerador con la ubicación por defecto a guardar la imagen</param> /// <param name="fileName">Nombre opcional, se generará un guid en caso de dejarse en blanco</param> /// <param name="saveMaxSizes">Tamaño máximo a guardarse, se guardarán versiones más pequeñas a ese tamaño</param> /// <returns>El nombre del archivo creado en crudo (sin extensión), al utilizarse GetImagePath con el nombre de archivo como identificador se completa la info</returns> public async Task <string> SaveImagesBase64(string imageBase64, ImageSaveLocationEnum imageLocation, string fileName = "", ImageSizeEnum saveMaxSizes = ImageSizeEnum.ImgOriginal) { if (string.IsNullOrEmpty(fileName)) { fileName = Guid.NewGuid().ToString("D"); } using Image img = await Base64ToImage(imageBase64); await SaveImage(img, imageLocation, fileName, saveMaxSizes); return(fileName); }
public async Task <IActionResult> Post([FromBody] string fileBase64, ImageSaveLocationEnum imageSaveLocation) { var model = new SaveImageBase64Command(); model.FileBase64 = fileBase64; model.ImageLocation = imageSaveLocation; //if (imageSaveLocation == ImageSaveLocationEnum.Profile) // model.CurrentUserId = User.GetUserId(); var imgGuid = await _commandBus.Send(model); return(Ok(imgGuid)); }
public async Task <IActionResult> Post(IFormFile file, ImageSaveLocationEnum imageSaveLocation) { var model = new SaveImageStreamCommand(); model.FileStream = file.OpenReadStream(); model.ImageLocation = imageSaveLocation; //if (imageSaveLocation == ImageSaveLocationEnum.Profile) // model.CurrentUserId = User.GetUserId(); var imgGuid = await _commandBus.Send(model); return(Ok(imgGuid)); }
public async Task <string> SaveImagesStream(Stream fileStream, ImageSaveLocationEnum imageLocation, string fileName = "", ImageSizeEnum saveMaxSizes = ImageSizeEnum.ImgOriginal) { if (string.IsNullOrEmpty(fileName)) { fileName = Guid.NewGuid().ToString("D"); } if (fileStream != null) { using Image img = await Image.LoadAsync(fileStream); await SaveImage(img, imageLocation, fileName, saveMaxSizes); } return(fileName); }