Exemple #1
0
        public async Task <string> SaveImage(IFormFile image)
        {
            try
            {
                var save_path = Path.Combine(_imagePath); //use this to avoid errors using normal string
                if (!Directory.Exists(save_path))
                {
                    Directory.CreateDirectory(save_path);
                }

                //Internet Explorer Error
                //var fileName = image.FileName;

                var mime     = image.FileName.Substring(image.FileName.LastIndexOf('.'));
                var fileName = $"image_{DateTime.Now.ToString("dd-MM-yyyy-HH-mm-ss")}{mime}";

                //a Stream is like a tunnel to the folder
                using (var fileStream = new FileStream(Path.Combine(save_path, fileName), FileMode.Create)) //using limits an IDisposable object to this scope
                {
                    //await image.CopyToAsync(fileStream);
                    MagicImageProcessor.ProcessImage(image.OpenReadStream(), fileStream, imageOptions());
                }

                return(fileName);
            }
            catch (Exception e)
            {
                Console.WriteLine(e.Message);
                return("Error");
            }
        }
Exemple #2
0
        public async Task <string> SaveImageAsync(IFormFile image)
        {
            try
            {
                var savePath = Path.Combine(_newsImagesPath);

                if (!Directory.Exists(savePath))
                {
                    Directory.CreateDirectory(savePath);
                }

                var fileName = $"img_{DateTime.Now:dd-MM-yyyy-HH-mm-ss}{image.FileName.Substring(image.FileName.LastIndexOf('.'))}";

                using var fileStream = new FileStream(Path.Combine(savePath, fileName), FileMode.Create);

                //await image.CopyToAsync(fileStream);
                await Task.Run(() => MagicImageProcessor.ProcessImage(image.OpenReadStream(), fileStream, ImageOptions()));

                return(fileName);
            }
            catch (Exception ex)
            {
                return(ex.Message);
            }
        }
        public Size MagicScalerResize()
        {
            // stride is width * bytes per pixel (3 for BGR), rounded up to the nearest multiple of 4
            const uint stride  = ResizedWidth * 3u + 3u & ~3u;
            const uint bufflen = ResizedHeight * stride;

            var settings = new ProcessImageSettings
            {
                Width   = ResizedWidth,
                Height  = ResizedHeight,
                Sharpen = false
            };

            using (var pixels = new TestPatternPixelSource(Width, Height, PixelFormats.Bgr24bpp))
                using (var pipeline = MagicImageProcessor.BuildPipeline(pixels, settings))
                {
                    var rect   = new Rectangle(0, 0, ResizedWidth, ResizedHeight);
                    var buffer = ArrayPool <byte> .Shared.Rent((int)bufflen);

                    pipeline.PixelSource.CopyPixels(rect, (int)stride, new Span <byte>(buffer, 0, (int)bufflen));
                    ArrayPool <byte> .Shared.Return(buffer);

                    return(rect.Size);
                }
        }
Exemple #4
0
        public async Task <string> SaveImage(IFormFile image)
        {
            try
            {
                var save_path = Path.Combine(_imagePath);
                if (!Directory.Exists(save_path))
                {
                    Directory.CreateDirectory(save_path);
                }

                //Internet explorer error
                //var fileName = image.FileName;
                var mime     = image.FileName.Substring(image.FileName.LastIndexOf('.'));
                var fileName = $"img_{DateTime.Now.ToString("dd-MM-yyyy-HH-mm-ss")}{mime}";
                using (var fileStream = new FileStream(Path.Combine(save_path, fileName), FileMode.Create))
                {
                    MagicImageProcessor.ProcessImage(image.OpenReadStream(), fileStream, ImageOptions());
                }
                return(fileName);
            }
            catch (Exception e)
            {
                Console.WriteLine(e.Message);
                return("Error");
            }
        }
Exemple #5
0
        public async Task <string> SaveImage(IFormFile image)
        {
            var save_path = Path.Combine(_ImaghePath);

            try
            {
                if (!Directory.Exists(save_path))
                {
                    Directory.CreateDirectory(save_path);
                }

                var mimeType = image.FileName.Substring(image.FileName.LastIndexOf('.'));
                var fileName = $"img_{DateTime.Now.ToString("dd-MM-yyyy-HH-mm-ss")}{mimeType}";

                using (var fileStram = new FileStream(Path.Combine(save_path, fileName), FileMode.Create))
                {
                    // await image.CopyToAsync(fileStram);
                    MagicImageProcessor.ProcessImage(image.OpenReadStream(), fileStram, ImageOptions());
                }



                return(fileName);
            }
            catch (Exception ex)
            {
                //throw ex;
                return("Error");
            }
        }
        public string SaveCategoryImage(IFormFile categoryImage)
        {
            try
            {
                //Get the path & if path can't be saved because doesn't exist then create it
                var categorySavePath = Path.Combine(_categoryImagePath);
                if (!Directory.Exists(categorySavePath))
                {
                    Directory.CreateDirectory(categorySavePath);
                }
                //Get the mime & fileName, done this way to prevent internet explorer errors
                var mime = categoryImage.FileName.Substring(categoryImage.FileName.LastIndexOf('.'));
                //Generate just the file name so it can be copied over to asset files instead of generic tag
                string   fileWithExt = categoryImage.FileName;
                string[] file        = fileWithExt.Split('.');
                string   fileNoExt   = file[0];

                var categoryFileName = $"{fileNoExt}_{DateTime.Now:dd-MM-yyyy-HH-mm-ss}{mime}";

                //Get the filestream and then save the image
                using (var categoryFileStream = new FileStream(Path.Combine(categorySavePath, categoryFileName), FileMode.Create))
                {
                    //Imagine processing to make files smaller, same size etc doesnt have an async method
                    MagicImageProcessor.ProcessImage(categoryImage.OpenReadStream(), categoryFileStream, CategoryImageOptions());
                }

                return(categoryFileName);
            }
            catch (Exception e)
            {
                Console.WriteLine(e.Message);
                return("Error");
            }
        }
Exemple #7
0
        private Stream MagicScaleResize(Stream stream)
        {
            var outStream = new MemoryStream(1024);

            const int quality = 75;

            var settings = new ProcessImageSettings()
            {
                Width = this._width,

                Height = this._height,

                ResizeMode = CropScaleMode.Crop,

                SaveFormat = fileFormat,

                JpegQuality = quality,

                JpegSubsampleMode = ChromaSubsampleMode.Subsample420
            };

            MagicImageProcessor.ProcessImage(stream, outStream, settings);

            return(outStream);
        }
Exemple #8
0
        public string SaveImage(IFormFile image)
        {
            var save_path = Path.Combine(_imagePath);

            try
            {
                if (!Directory.Exists(save_path))
                {
                    Directory.CreateDirectory(save_path);
                }

                var mime = image.FileName.Substring(image.FileName.LastIndexOf("."));

                var fileName = $"img_{DateTime.Now.ToString("dd-MM-yyy-HH-mm-ss")}{mime}";

                using (var filestream = new FileStream(Path.Combine(save_path, fileName), FileMode.Create))
                {
                    /*await image.CopyToAsync(filestream);*/
                    MagicImageProcessor.ProcessImage(image.OpenReadStream(), filestream, imageoptions());
                }


                return(fileName);
            }
            catch (Exception e)
            {
                Console.WriteLine(e.Message);

                return("Error-");
            }
        }
Exemple #9
0
        public FileInfo ResizeTo(FileInfo toResize, int width, int quality, string imageTypeString, bool addSizeString,
                                 IProgress <string> progress)
        {
            if (!toResize.Exists)
            {
                return(null);
            }

            var newFile = Path.Combine(toResize.Directory?.FullName ?? string.Empty, $"{Guid.NewGuid()}.jpg");

            var newFileInfo = new FileInfo(newFile);

            if (newFileInfo.Exists)
            {
                newFileInfo.Delete();
            }

            var settings = new ProcessImageSettings {
                Width = width, JpegQuality = quality
            };

            using var outStream = new FileStream(newFileInfo.FullName, FileMode.Create);
            var results = MagicImageProcessor.ProcessImage(toResize.FullNameWithLongFilePrefix(), outStream, settings);

            outStream.Dispose();

            var finalFileName = Path.Combine(toResize.Directory?.FullName ?? string.Empty,
                                             $"{Path.GetFileNameWithoutExtension(toResize.Name)}--{imageTypeString}{(addSizeString ? $"--{width}w--{results.Settings.Height}h" : string.Empty)}.jpg");

            FileManagement.MoveFileAndLog(newFileInfo.FullName, finalFileName);

            newFileInfo = new FileInfo(finalFileName);

            return(newFileInfo);
        }
Exemple #10
0
        public async Task <string> SaveImage(IFormFile image)
        {
            //try
            {
                var save_path = Path.Combine(_imagePath);

                if (!Directory.Exists(_imagePath))
                {
                    Directory.CreateDirectory(save_path);
                }

                //Internet Explorer Error
                //var fileName = image.FileName;

                //var mime gets the code of the image (jpg, png, etc), filename is the name we give to the image, and add to it the mime.
                var mime     = image.FileName.Substring(image.FileName.LastIndexOf('.'));
                var fileName = $"img_{DateTime.Now.ToString("dd-MM-yyyy-HH-mm-ss")}{mime}";

                using (var fileStream = new FileStream(Path.Combine(save_path, fileName), FileMode.Create))
                {
                    MagicImageProcessor.ProcessImage(image.OpenReadStream(), fileStream, ImageOptions());
                }



                return(fileName);
            }
            //catch(Exception e)
            //{
            //    Console.WriteLine(e.Message);
            //    return "Error";
            //}
        }
Exemple #11
0
        public string SaveImage(IFormFile image)
        {
            try
            {
                var save_path = Path.Combine(_imagePath);
                if (!Directory.Exists(save_path))
                {
                    Directory.CreateDirectory(save_path);
                }
                string mime     = image.FileName.Substring(image.FileName.LastIndexOf('.'));
                var    fileName = $"dev-messenger_img_{DateTime.Now.ToString("dd-MM-yyyy-HH-mm-ss").Replace("-", string.Empty)}{mime}";

                using (var fileStream = new FileStream(Path.Combine(save_path, fileName), FileMode.Create))
                {
                    MagicImageProcessor.ProcessImage(image.OpenReadStream(), fileStream, ImageOptions());
                }
                return(fileName);
            }
            catch (Exception e)
            {
                Console.WriteLine(e.Message);
                return("Error");
            }

            ProcessImageSettings ImageOptions() => new ProcessImageSettings
            {
                Width             = 800,
                Height            = 500,
                SaveFormat        = FileFormat.Auto,
                ResizeMode        = CropScaleMode.Crop,
                JpegQuality       = 100,
                JpegSubsampleMode = ChromaSubsampleMode.Subsample420
            };
        }
 private void resizeImage(string input)
 {
     using (var output = new FileStream(OutputPath(input, outputDirectory), FileMode.Create))
     {
         MagicImageProcessor.ProcessImage(input, output, this.settings);
     }
 }
Exemple #13
0
    private void MinifyImage(string source, string destination)
    {
        var settings = new ProcessImageSettings {
            Width = Consts.ImageWidth
        };

        using var outStream = new FileStream(destination, FileMode.CreateNew);
        MagicImageProcessor.ProcessImage(source, outStream, settings);
    }
        private async Task SaveFile(Stream file, string path)
        {
            using FileStream imageStream = System.IO.File.Create("Images/" + Guid.NewGuid().ToString() + Path.GetExtension(path));
            await file.CopyToAsync(imageStream);

            imageStream.Position           = 0;
            using FileStream previewStream = System.IO.File.Create("Previews/" + Path.GetFileName(imageStream.Name));
            MagicImageProcessor.ProcessImage(imageStream, previewStream, settings);
        }
Exemple #15
0
        private static void OptimizeThumb(string tempThumbPath, string thumbPath)
        {
            using (var output = new FileStream(thumbPath, FileMode.Create))
            {
                MagicImageProcessor.ProcessImage(tempThumbPath, output, ThumbImageSettings);
            }

            File.Delete(tempThumbPath);
        }
Exemple #16
0
        public Stream GenerateThumbnail(Stream originalStream)
        {
            var outputStream = new MemoryStream();

            MagicImageProcessor.ProcessImage(originalStream, outputStream, new ProcessImageSettings {
                Width = 50, Height = 50
            });

            outputStream.Seek(0, SeekOrigin.Begin);

            return(outputStream);
        }
Exemple #17
0
        //Save portfolio asset
        public string SavePortfolioAsset(IFormFile portfolioAsset)
        {
            try
            {
                //Get the mime & fileName, done this way to prevent internet explorer errors
                var mime = portfolioAsset.FileName.Substring(portfolioAsset.FileName.LastIndexOf('.'));
                //Generate just the file name so it can be copied over to asset files instead of generic tag
                string   fileWithExt = portfolioAsset.FileName;
                string[] file        = fileWithExt.Split('.');
                string   fileNoExt   = file[0];

                if (ImageTypes.Contains(mime))
                {
                    //Get the path & if path can't be saved because doesn't exist then create it
                    var save_path = Path.Combine(_portfolioAssetPath);
                    if (!Directory.Exists(save_path))
                    {
                        Directory.CreateDirectory(save_path);
                    }
                    var fileName = $"{fileNoExt}_{DateTime.Now.ToString("dd-MM-yyyy-HH-mm-ss")}{mime}";
                    //Get the filestream and then save the image
                    using (var fileStream = new FileStream(Path.Combine(save_path, fileName), FileMode.Create))
                    {
                        //Imagine processing to make files smaller, same size etc doesnt have an async method
                        MagicImageProcessor.ProcessImage(portfolioAsset.OpenReadStream(), fileStream, AssetImageOptions());
                    }
                    return(fileName);
                }
                else
                {
                    //Get the path & if path can't be saved because doesn't exist then create it
                    var save_path = Path.Combine(_portfolioAssetFilesPath);
                    if (!Directory.Exists(save_path))
                    {
                        Directory.CreateDirectory(save_path);
                    }
                    //Get the mime & fileName, done this way to prevent internet explorer errors
                    var fileName = $"{fileNoExt}_{DateTime.Now.ToString("dd-MM-yyyy-HH-mm-ss")}{mime}";

                    using (FileStream fileStream = new FileStream(Path.Combine(save_path, fileName), FileMode.Create, FileAccess.Write))
                    {
                        portfolioAsset.CopyTo(fileStream);
                    }
                    return(fileName);
                }
            }
            catch (Exception e)
            {
                Console.WriteLine(e.Message);
                return("Error");
            }
        }
        public static void Resize(Stream inputStream, Stream outputStream, int oldWidth, int oldHeight, int size = DefaultThumbnailSize)
        {
            var scaled = ScaledSize(oldWidth, oldHeight, size);

            var settings = new ProcessImageSettings()
            {
                Width             = scaled.width,
                Height            = scaled.height,
                ResizeMode        = CropScaleMode.Max,
                SaveFormat        = FileFormat.Jpeg,
                JpegQuality       = Quality,
                JpegSubsampleMode = ChromaSubsampleMode.Subsample420
            };

            MagicImageProcessor.ProcessImage(inputStream, outputStream, settings);
        }
        public void SaveImage(int ID, IFormFile file)
        {
            if (file == null || file.Length == 0)
            {
                // Empty file
                string defaultFileName = "default.png";
                string sourcePath      = Path.Combine(_hostingEnv.WebRootPath + @"\img\temp", defaultFileName);

                var ext      = Path.GetExtension(Path.Combine(sourcePath, defaultFileName));
                var fileName = ID + ext;

                string targetPath = Path.Combine(_hostingEnv.WebRootPath + @"\img\products", fileName);

                File.Copy(sourcePath, targetPath);
            }
            else
            {
                var fileName = ID + Path.GetExtension(file.FileName);
                fileName = _hostingEnv.WebRootPath + $@"\img\temp\{fileName}";

                using (FileStream fs = File.Create(fileName))
                {
                    file.CopyTo(fs);
                    fs.Flush();
                }

                const int size = 160;

                var path            = fileName;
                var outputDirectory = string.Empty;
                outputDirectory = _hostingEnv.WebRootPath + $@"\img\products";

                var settings = new ProcessImageSettings()
                {
                    Width      = size,
                    Height     = size,
                    ResizeMode = CropScaleMode.Max,
                    SaveFormat = FileFormat.Png
                };

                using (var output = new FileStream(OutputPath(path, outputDirectory), FileMode.Create))
                {
                    MagicImageProcessor.ProcessImage(path, output, settings);
                    File.Delete(path);
                }
            }
        }
        internal static void MagicScalerResize(string path, int size, string outputDirectory)
        {
            var settings = new ProcessImageSettings()
            {
                Width             = size,
                Height            = size,
                ResizeMode        = CropScaleMode.Max,
                SaveFormat        = FileFormat.Jpeg,
                JpegQuality       = Quality,
                JpegSubsampleMode = ChromaSubsampleMode.Subsample420
            };

            using (var output = new FileStream(OutputPath(path, outputDirectory, MagicScaler), FileMode.Create))
            {
                MagicImageProcessor.ProcessImage(path, output, settings);
            }
        }
        private static async Task process(TaskCompletionSource <ArraySegment <byte> > tcs, string reqPath, string cachePath, ProcessImageSettings s)
        {
            try
            {
                if (reqPath == WebRSizeModule.NotFoundPath)
                {
                    using (await enterWorkQueueAsync())
                        using (var oimg = new MemoryStream(8192))
                        {
#pragma warning disable 0618 // obsolete
                            GdiImageProcessor.CreateBrokenImage(oimg, s);
#pragma warning restore 0618
                            oimg.Position = 0;
                            saveResult(tcs, oimg, cachePath, DateTime.MinValue);
                            return;
                        }
                }

                var vpp = HostingEnvironment.VirtualPathProvider;

                var file = vpp is CachingAsyncVirtualPathProvider vppAsync ? await vppAsync.GetFileAsync(reqPath) : vpp.GetFile(reqPath);

                var afile = file as AsyncVirtualFile;

                var lastWrite = afile?.LastModified ?? DateTime.MinValue;
                if (lastWrite == DateTime.MinValue && mpbvfType.Value.IsAssignableFrom(file.GetType()))
                {
                    lastWrite = File.GetLastWriteTimeUtc(HostingEnvironment.MapPath(reqPath));
                }

                using (var iimg = afile != null ? await afile.OpenAsync() : file.Open())
                    using (await enterWorkQueueAsync())
                        using (var oimg = new MemoryStream(16384))
                        {
                            MagicImageProcessor.ProcessImage(iimg, oimg, s);

                            saveResult(tcs, oimg, cachePath, lastWrite);
                        }
            }
            catch (Exception ex)
            {
                tcs.SetException(ex);

                tdic.TryRemove(cachePath, out _);
            }
        }
Exemple #22
0
        private void UploadWholeFile(HttpContext requestContext, List <ViewDataUploadFilesResult> statuses)
        {
            var request = requestContext.Request;

            foreach (IFormFile file in request.Form.Files)
            //for (int i = 0; i < request.Files.Count; i++)
            {
                //var file = request.Files[i];
                String pathOnServer = Path.Combine(StorageRoot);
                var    fullPath     = Path.Combine(pathOnServer, Path.GetFileName(file.FileName));
                //file.SaveAs(fullPath);
                using (FileStream fs = System.IO.File.Create(fullPath))
                {
                    file.CopyTo(fs);
                    fs.Flush();
                }
                //Create thumb
                string[] imageArray = file.FileName.Split('.');
                if (imageArray.Length != 0)
                {
                    String extansion = imageArray[imageArray.Length - 1].ToLower();
                    if (extansion != "jpg" && extansion != "png" && extansion != "jpeg") //Do not create thumb if file is not an image
                    {
                    }
                    else
                    {
                        var thumbfullPath = Path.Combine(pathOnServer, "thumbs");
                        //String fileThumb = file.FileName + ".80x80.jpg";
                        String fileThumb      = Path.GetFileNameWithoutExtension(file.FileName) + "80x80.jpg";
                        var    thumbfullPath2 = Path.Combine(thumbfullPath, fileThumb);
                        //using (MemoryStream stream = new MemoryStream(System.IO.File.ReadAllBytes(fullPath)))
                        //{
                        //    var thumbnail = new WebImage(stream).Resize(80, 80);
                        //    thumbnail.Save(ThumbfullPath2, "jpg");
                        //}
                        using (var outStream = new FileStream(thumbfullPath2, FileMode.Create))
                        {
                            MagicImageProcessor.ProcessImage(fullPath, outStream, new ProcessImageSettings {
                                Width = 80
                            });
                        }
                    }
                }
                statuses.Add(UploadResult(file.FileName, file.Length, file.FileName));
            }
        }
Exemple #23
0
        public void MagicScalerResize(string input)
        {
            var settings = new ProcessImageSettings()
            {
                Width             = ThumbnailSize,
                Height            = ThumbnailSize,
                ResizeMode        = CropScaleMode.Max,
                SaveFormat        = FileFormat.Jpeg,
                JpegQuality       = Quality,
                JpegSubsampleMode = ChromaSubsampleMode.Subsample420
            };

            using (var output = new FileStream(OutputPath(input, MagicScaler), FileMode.Create))
            {
                MagicImageProcessor.ProcessImage(input, output, settings);
            }
        }
        public (bool Saved, string FileName) SaveImage(string id, IFormFile picture)
        {
            try
            {
                var settings = new ProcessImageSettings()
                {
                    Height      = 75,
                    Width       = 75,
                    ResizeMode  = CropScaleMode.Crop,
                    SaveFormat  = FileFormat.Jpeg,
                    JpegQuality = 100
                };

                var savePath = Path.Combine(_env.ContentRootPath, _userImages, id);
                if (!Directory.Exists(savePath))
                {
                    Directory.CreateDirectory(savePath);
                }

                var fileName  = $"img_{CreateFileName()}.jpg";
                var finalPath = Path.Combine(savePath, fileName);

                var currentImage = Directory.GetFiles(savePath).FirstOrDefault();

                using (var output = new FileStream(finalPath, FileMode.Create))
                {
                    MagicImageProcessor.ProcessImage(picture.OpenReadStream(), output, settings);
                }

                if (!IsNullOrEmpty(currentImage))
                {
                    File.Delete(currentImage);
                }

                return(true, fileName);
            }
            catch (Exception e)
            {
                _logger.LogError(e, e.Message);

                return(false, $"Error: {e.Message}");
            }
        }
Exemple #25
0
        public void Test()
        {
            using (FileStream inputStream = File.OpenRead(@"Content\landscape-4665051.small.jpg"))
                using (var originalImage = new Bitmap(inputStream))
                    using (var outputStream = File.Create(@"Content\landscape-4665051.resized.jpg"))
                    {
                        int width  = 1140;
                        var ratio  = (float)width / originalImage.Width;
                        int height = Convert.ToInt32(originalImage.Height * ratio);

                        var settings = new ProcessImageSettings
                        {
                            Width = 1140
                        };

                        inputStream.Seek(0, SeekOrigin.Begin);
                        var result = MagicImageProcessor.ProcessImage(inputStream, outputStream, settings);
                    }
        }
Exemple #26
0
        public static string ResizeImageFromByte(byte[] buffer, int size)
        {
            const int quality  = 100;
            var       settings = new ProcessImageSettings()
            {
                Width             = size,
                Height            = size,
                ResizeMode        = CropScaleMode.Max,
                SaveFormat        = FileFormat.Jpeg,
                JpegQuality       = quality,
                JpegSubsampleMode = ChromaSubsampleMode.Subsample420
            };

            using var imgStream = new MemoryStream(buffer);
            using var output    = new MemoryStream();
            MagicImageProcessor.ProcessImage(imgStream, output, settings);
            var t = ReadToEnd(output);

            return(ImageToSrc(t));
        }
Exemple #27
0
        /// <summary>
        /// Cache entity thumbnail.
        /// </summary>
        /// <remarks>
        /// This operation encodes <paramref name="decodedImage"/> as JPEG and saves the encoded data
        /// in attribute storage using the <see cref="IAttributeStorage.StoreThumbnail"/> method.
        /// </remarks>
        /// <param name="entity">Metadata of the image</param>
        /// <param name="decodedImage">Decoded image in BMP format</param>
        private void SaveThumbnail(IEntity entity, byte[] decodedImage)
        {
            using (var output = new MemoryStream())
                using (var input = new MemoryStream(decodedImage))
                {
                    MagicImageProcessor.ProcessImage(input, output, new ProcessImageSettings
                    {
                        Interpolation = InterpolationSettings.Linear,
                        SaveFormat    = FileFormat.Jpeg,
                        JpegQuality   = SavedThumbnailQuality
                    });

                    // update entity thumbnail
                    var value     = new ImageValue(output.ToArray());
                    var newEntity = entity.SetAttribute(new Attribute(
                                                            ExifAttributeReaderFactory.Thumbnail,
                                                            value, AttributeSource.Metadata));
                    _storage.StoreThumbnail(newEntity);
                }
        }
Exemple #28
0
        public Task <string> CreateThumbnailAsync(byte[] content, string fileName)
        {
            var frameInfo = ImageFileInfo.Load(content).Frames.First();

            var settings = new ProcessImageSettings
            {
                Width      = frameInfo.Width >= frameInfo.Height ? THUMBNAIL_SIZE : 0,
                Height     = frameInfo.Height > frameInfo.Width ? THUMBNAIL_SIZE : 0,
                HybridMode = HybridScaleMode.Off,
                ResizeMode = CropScaleMode.Contain
            };

            var newFileName = GetUniqueFileName(GetThumbnailFileName(fileName));

            using (var stream = GetFileStream(newFileName, FileMode.Create))
            {
                MagicImageProcessor.ProcessImage(content, stream, settings);
            }

            return(Task.FromResult(newFileName));
        }
Exemple #29
0
        public static async Task ResizeImageToFile(string path, IFormFile file)
        {
            const int size     = Constants.ImageSize;
            const int quality  = 100;
            var       settings = new ProcessImageSettings()
            {
                Width             = size,
                Height            = size,
                ResizeMode        = CropScaleMode.Max,
                SaveFormat        = FileFormat.Jpeg,
                JpegQuality       = quality,
                JpegSubsampleMode = ChromaSubsampleMode.Subsample420
            };

            await using var imgStream = new MemoryStream();
            await using var output    = new FileStream(path, FileMode.Create);
            await file.CopyToAsync(imgStream);

            imgStream.Position = 0;
            MagicImageProcessor.ProcessImage(imgStream, output, settings);
        }
Exemple #30
0
        public void MagicScalerResize()
        {
            // stride is width * bytes per pixel (3 for BGR), rounded up to the nearest multiple of 4
            const uint stride  = ResizedWidth * 3u + 3u & ~3u;
            const uint bufflen = ResizedHeight * stride;

            var pixels   = new TestPatternPixelSource(Width, Height, PixelFormats.Bgr24bpp);
            var settings = new ProcessImageSettings
            {
                Width  = ResizedWidth,
                Height = ResizedHeight
            };

            using (var pipeline = MagicImageProcessor.BuildPipeline(pixels, settings))
            {
                var rect   = new System.Drawing.Rectangle(0, 0, ResizedWidth, ResizedHeight);
                var buffer = Marshal.AllocHGlobal((int)bufflen);
                pipeline.PixelSource.CopyPixels(rect, stride, bufflen, buffer);
                Marshal.FreeHGlobal(buffer);
            }
        }