如何使用Magick.NET或GraphicsMagick.NET创建图像切片

时间:2014-10-28 16:32:24

标签: 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#中尝试了以下代码,但没有成功。

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测试

// 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中的adjoin和repage都完全没有了。

1 个答案:

答案 0 :(得分:2)

裁剪选项会调用与您期望的不同的代码。目前,只有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");
  }
}

P.S。 adjickin和rePage都支持MagickScript(MSL)