我如何使用Magick.net中的`蒙太奇'功能

时间:2016-10-21 20:55:34

标签: c# imagemagick.net

我是Magick.net的新手,但我正在尝试创建一个文件生成器。我已经从Linux命令行中得到了很好的工作(虽然没有我喜欢的大小),但我需要制作一个.net应用程序供其他无法访问Linux或Web的人使用(所以使用PHP没有问题,至少还没有。)

做类似的事情:

p <- ".+?DATE [0-9/]{10}|\"" gsub(p, "", s1) # [1] "LAW TITLE HERE MAY CONTAIN 4|_|D4NUM3R!C OR P_NC7U@7|()N." gsub(p, "", s2) # [1] "LAW TITLE HERE MAY CONTAIN 4|_|D4NUM3R!C OR P_NC7U@7|()N"

但不确定如何在C#.net包装器中使用montage -background none -fill black -font Helvetica-Condensed-Light -pointsize 26 label:'Foobar Controller 3.1.4.0 Installer' +set label -shadow -geometry +5+5 test_v3.png

montage

但我对如何实现这一点感到困惑。

非常感谢任何建议。文档似乎令人困惑,因为我没有做“标准”的事情,因为输出将在图像面板中预览,并可选择保存到文件系统。

1 个答案:

答案 0 :(得分:1)

以下是您需要如何从蒙太奇转换命令的示例。

using (var images = new MagickImageCollection())
{
  var readSettings = new MagickReadSettings()
  {
    BackgroundColor = MagickColors.None, // -background none
    FillColor = MagickColors.Black, // -fill black
    Font = "Helvetica-Condensed-Light", // -font Helvetica-Condensed-Light
    FontPointsize = 26 // -pointsize 26
  };

  // label:'Foobar Controller 3.1.4.0 Installer'
  var image = new MagickImage("label:Foobar Controller 3.1.4.0 Installer", readSettings);
  image.RemoveAttribute("label"); // +set label
  images.Add(image);

  var montageSettings = new MontageSettings()
  {
    BackgroundColor = MagickColors.None, // -background none
    Shadow = true, // -shadow
    Geometry = new MagickGeometry(5, 5, 0, 0) // -geometry +5+5
  };

  using (MagickImage result = images.Montage(montageSettings))
  {
    result.Write("test_v3.png");
  }
}

但是因为你只使用蒙太奇的阴影部分,你也可以像这样执行你的代码:

var readSettings = new MagickReadSettings()
{
   BackgroundColor = MagickColors.None,
   FillColor = MagickColors.Black,
   Font = "Helvetica-Condensed-Light",
   FontPointsize = 26
};

var label = new MagickImage("label:Foobar Controller 3.1.4.0 Installer", readSettings);
using (MagickImage shadow = label.Clone())
{
   // This is what is happening under the hood.
  shadow.Shadow(5, 5, 2.0, new Percentage(80), MagickColors.Black);
  shadow.Composite(label, CompositeOperator.Over);
  shadow.Write("test_v3.png");
}