Crop Image - Пример вырезания изображения с изменением размера и использованием библиотеки SixLabors.ImageSharp на .NET Core C#

Простой пример класса с методом для получения квадратного превью изображения в .NET Core, при помощи библиотеки SixLabors.ImageSharp.

Пример:

using SixLabors.ImageSharp;
using SixLabors.ImageSharp.Processing;
using SixLabors.ImageSharp.PixelFormats;
using System;
using SixLabors.ImageSharp.Formats.Jpeg;

namespace TransformImage.Methods
{
    public static class ImgActions
    {
        public static void CropImage(string path, string path_in, int size)
        {
            try
            {
                // Открывает файл, определяет тип файла и декодирует
                using (Image<Rgba32> image = Image.Load(path)) 
                {
                    // Теперь изображение находится в независимой от формата файла структуре в памяти как серия Rgba32 пикселей
                    
                    int line = image.Height < image.Width ? image.Height : image.Width;
                    
                    // Вырезаем часть изображения (квадрат по минимальной стороне)
                    
                    image.Mutate(tx => tx.Crop(line, line));
                    
                    // Изменяем размер изображения
                    
                    image.Mutate(ctx => ctx.Resize(size, size)); 

                    // Записываем в заданном формате с указанным качеством, без метаданных для экономии места
                    
                    image.Save(path_in,new JpegEncoder{Quality = 100, IgnoreMetadata = true}); 
                }
            }
            catch (Exception ex)
            {
                Program.logger.Error(ex, ex.Message);
            }
        }

    }
}



Сама библиотека находится здесь.

Вот и всё.

Подробнее

Вырезаем прямоугольную область изображения в C#

Из архива...
Недавно пришлось сделать простенькую подгонялку фотографий в заданные рамки, так чтобы пользователь мог собственноручно выбрать область на фото источнике и вырезать её. Впринципе ничего сложного, самое сложное пожалуй — это отрисовка прямоугольника выделения, когда нажали на кнопку мыши и перемещаем её по изображению — выделяя необходимую нам область.

Сначала самое важное. У картинки pictureBox сразу включаем свойство SizeMode в AutoSize, ни в коем случае ни какие нибудь там Zoom-ы если конечно нет желания поразбираться с масштабированием.

Далее — надо сделать так — чтобы работал скроллинг при выделении мышкой. Так уж получилось что это больное место в .NET (не работает оно само собой и всё тут).

Подробнее