JPG обрезка в пакетном режиме для создания квадратных миниатюр - PullRequest
0 голосов
/ 05 марта 2011

Я ищу легкий пакетный инструмент для обрезки файлов изображений.Кадрирование должно быть выполнено вокруг центра, так как соотношение сторон может быть 3: 4 или 4: 3. Это означает, что для более высоких изображений кадрирование будет происходить сверху и снизу для получения квадратного изображения.Для более широких изображений обрезка будет происходить слева и справа для создания квадратного изображения.

Кто-нибудь использовал такой инструмент?Я использую .NET 4.0 и C #

Я не ищу ImageMagick или nConvert.

Ответы [ 2 ]

1 голос
/ 07 марта 2011

Этот кулак создает растровое изображение в памяти square размером с квадрат, который вписывается в оригинал.Затем масштабируется до thumbSize.

string imagefolder = @"C:\Users\russ\Originals";
string thumbfolder = @"C:\Users\russ\Squares";
int thumbSize = 100;

foreach (string file in System.IO.Directory.GetFiles(imagefolder, "*.jpg"))
{
    using (Image original  = Bitmap.FromFile(file))
    {
        Size size = new Size(
            Math.Min(original.Width, original.Height),
            Math.Min(original.Width, original.Height)
        );
        int translateX = (size.Width - original.Width) / 2;
        int translateY = (size.Height - original.Height) / 2;

        using (Bitmap square = new Bitmap(size.Width, size.Height))
        {
            using (Graphics g = Graphics.FromImage(square))
            {
                 g.DrawImage(original, translateX, translateY, original.Width, original.Height);
            }

            using (Bitmap thumb = new Bitmap(thumbSize, thumbSize))
            {
                using (Graphics g2 = Graphics.FromImage(thumb))
                {
                    g2.DrawImage(square, 0, 0, thumbSize, thumbSize);
                }
                string thumbFile = Path.Combine(thumbfolder, Path.GetFileName(file));
                thumb.Save(thumbFile, ImageFormat.Jpeg);
            }

        }
    }
}
0 голосов
/ 05 марта 2011

Взгляните на ImageMagick.NET . Imagemagick - это набор инструментов и библиотек командной строки для linux, и, похоже, кто-то перенес его в windows / .NET. Я никогда не использовал функциональность кадрирования, но уверен, что он делает то, что вам нужно. Больше информации и использования, похоже, здесь , старая страница проекта.

...