2016-10-21 1 views
1

Я новичок в Magick.net, но я пытаюсь создать генератор файлов. Я отлично работал в командной строке Linux (без размера, который я предпочитаю), но мне нужно сделать приложение .net для использования другими, у которых нет доступа к Linux или к сети (так что с помощью PHP не под вопросом, по крайней мере пока нет).Как использовать функцию «montage» из Magick.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 внутри C# .net обертке.

using (MagickImage image = new MagickImage(new MagickColor("#000000"), 419, 39)) 
      { 
       new Drawables() 
       // Draw text on the image 

Но я довольно смущен тем, как я могу это сделать.

Любые советы приветствуются. Документация кажется сбивающей с толку, поскольку я не делаю что-то «стандартное», так как вывод будет просматриваться на панели изображений с возможностью сохранения в файловой системе.

ответ

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"); 
    } 
} 

Но поскольку вы только с помощью теневой части Montage можно также выполнить ваш следующий код:

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"); 
}