C# 如何使用Magick.NET或GraphicsMagick.NET创建图像分幅

C# 如何使用Magick.NET或GraphicsMagick.NET创建图像分幅,c#,imagemagick,graphicsmagick,magick.net,C#,Imagemagick,Graphicsmagick,Magick.net,我在CLI上使用ImageMagick,如下所示: gm convert input.png -crop 512x512 +repage +adjoin "tiles/tile%02d.png" 创建我的输入图像的平铺版本。但是我想用GraphicsMagick.NET或Magick.NET来完成它,而不是使用命令行。我遇到的问题是,GM.NET和IM.NET似乎都不支持“+repage”和“+adjoin”。相反,两者都只生成一个输出图像 我在C#中尝试了以下代码,但没有成功 Graphic

我在CLI上使用ImageMagick,如下所示:

gm convert input.png -crop 512x512 +repage +adjoin "tiles/tile%02d.png"
创建我的输入图像的平铺版本。但是我想用GraphicsMagick.NET或Magick.NET来完成它,而不是使用命令行。我遇到的问题是,GM.NET和IM.NET似乎都不支持“+repage”和“+adjoin”。相反,两者都只生成一个输出图像

我在C#中尝试了以下代码,但没有成功

GraphicsMagick.NET测试

MagickImage image = new MagickImage("test.png");
MagickGeometry geo = new MagickGeometry(512,512);

image.Crop(geo);
image.RePage();
image.Adjoin = true; // i tried false too! 
image.Write("testout_%d.png");
// ImageMagick.NET Test
using (MagickImage image = new MagickImage("test.png"))
{
   image.Crop(512, 512,Gravity.Northwest);
   image.RePage();
   image.Adjoin = true;
   image.Write("testout_%d.png");
}
ImageMagick.NET测试

MagickImage image = new MagickImage("test.png");
MagickGeometry geo = new MagickGeometry(512,512);

image.Crop(geo);
image.RePage();
image.Adjoin = true; // i tried false too! 
image.Write("testout_%d.png");
// ImageMagick.NET Test
using (MagickImage image = new MagickImage("test.png"))
{
   image.Crop(512, 512,Gravity.Northwest);
   image.RePage();
   image.Adjoin = true;
   image.Write("testout_%d.png");
}

我还尝试使用MSL生成我的图像的平铺版本,但MSL似乎也不支持,MSL中完全缺少“邻接”和“重新分页”。

裁剪选项调用的代码与您期望的不同。目前,Magick.NET仅支持将图像裁剪为平铺。下面是一个你如何做到这一点的例子

using (MagickImage image = new MagickImage("test.png"))
{
  int i = 0;
  foreach (MagickImage tile in image.CropToTiles(512, 512))
  {
    tile.Write("testout_" + (i++) + ".png");
  }
}
注意:MagickScript(MSL)支持adjoin和rePage