我正在寻找一种用于裁剪图像文件的轻量级批处理工具。由于纵横比可以是 3:4 或 4:3,因此要在中心周围进行裁剪这意味着对于较高的图像,裁剪将在顶部和底部进行以生成方形图像。对于更宽的图像,将在左右两侧进行裁剪以生成方形图像。
有人用过这样的工具吗?我正在使用 .NET 4.0 和 C#
我不是在寻找 ImageMagick 或 nConvert。
我正在寻找一种用于裁剪图像文件的轻量级批处理工具。由于纵横比可以是 3:4 或 4:3,因此要在中心周围进行裁剪这意味着对于较高的图像,裁剪将在顶部和底部进行以生成方形图像。对于更宽的图像,将在左右两侧进行裁剪以生成方形图像。
有人用过这样的工具吗?我正在使用 .NET 4.0 和 C#
我不是在寻找 ImageMagick 或 nConvert。
这个拳头创建了一个内存中的位图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);
}
}
}
}
看看ImageMagick.NET。Imagemagick 是一组用于 linux 的命令行工具和库,似乎有人将其移植到 windows/.NET。我从未使用过裁剪功能,但可以确定它可以满足您的需求。更多信息和用法似乎在这里,该项目的旧页面。