JPG批量裁剪以生成方形缩略图

时间:2011-03-04 21:42:34

标签: thumbnails crop imaging

我正在寻找一种轻量级批处理工具来裁剪图像文件。 由于纵横比可以是3:4或4:3,因此在中心周围进行裁剪 这意味着对于较高的图像,裁剪将发生在顶部和底部以生成方形图像。 对于较宽的图像,将在左侧和右侧进行裁剪以生成方形图像。

有人使用过这样的工具吗?我使用的是.NET 4.0和C#

我不是在寻找ImageMagick或nConvert。

2 个答案:

答案 0 :(得分:1)

这个拳头创建了一个内存中的位图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);
            }

        }
    }
}

答案 1 :(得分:0)

看看ImageMagick.NET。 Imagemagick是一套用于linux的命令行工具和库,似乎有人将它移植到了Windows / .NET。我从未使用过庄稼功能,但确定它可以满足您的需求。更多信息和用法似乎是here,项目的旧页面。