c# - 如何使用 Magick.NET 或 GraphicsMagick.NET 创建图像图 block

标签 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。

最佳答案

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

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. MagickScript (MSL) 支持 adjoin 和 rePage

关于c# - 如何使用 Magick.NET 或 GraphicsMagick.NET 创建图像图 block ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26613608/

相关文章:

c# - 通过 .NET 连接到 Active Directory

c# - 如何禁用 C# 窗体上的最大化按钮

c# - 如何从 .NET 程序集中检索二进制文件?

javascript - WScript 未定义

macos - ImageMagick 无法识别 .eps 文件(无解码委托(delegate))

c - PostgreSQL Type 1 接口(interface)和 ImageMagick 代码 - 冲突的 StringInfo 定义?

c# - 使用 xamarin studio 进行 windows 7 桌面应用程序开发

c - Graphicsmagick 图像未正确保存?

node.js - 在node中的graphicsmagick中将PNG缓冲区转换为JPG