Ejemplo n.º 1
0
        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))
Ejemplo n.º 2
0
 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;
 }
Ejemplo n.º 3
0
        /// <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);
        }
Ejemplo n.º 4
0
        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));
        }
Ejemplo n.º 5
0
        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));
        }
Ejemplo n.º 6
0
        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);
        }