Командная строка ImageMagick для Magick.net C#

Привет всем, у меня есть следующая командная строка, которая отлично подходит для того, что я хочу сделать, но не могу перевести ее в версию C# Magick.net:

convert YnTf9.png ^
( -clone 0 -blur 0x5 -gravity center -crop 400x300+0+0 +repage ) ^
( -clone 0 -resize x300 ) ^
-delete 0 ^
-gravity center -compose over -composite ^
result.png

Пока у меня есть этот код C#:

using (MagickImage image = new MagickImage(@"C:\Users\David\Pictures\YnTf9.png"))
{
     using (MagickImage backgroundImg = (MagickImage)image.Clone())
     {
          backgroundImg.Blur(0, 5);
          backgroundImg.Crop(400, 300, Gravity.Center);
          backgroundImg.RePage();
          backgroundImg.Resize(0, 300);

          image.Composite(backgroundImg, Gravity.Center, CompositeOperator.SrcOver);
          image.Write("CODETest.png");
     }
}

Сделав это, я запустил его, и получилось обычное изображение:

Командная строка ImageMagick для Magick.net C#

Когда это должно выглядеть так:

Командная строка ImageMagick для Magick.net C#

поэтому я знаю, что я не выполняю эфир в правильном порядке и / или правильных командах.

Было бы здорово, если бы кто-нибудь мог перевести это для меня! :)

Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
0
0
1 468
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

-clone в скобках создает индивидуальное изображение:

convert YnTf9.png ^
# Creates a copy of YnTf9.png.
( -clone 0 -blur 0x5 -gravity center -crop 400x300+0+0 +repage ) ^
# Creates another copy of YnTf9.png
( -clone 0 -resize x300 ) ^
# Removes YnTf9.png from the image list, you now only have the two clones
-delete 0 ^
-gravity center -compose over -composite ^
result.png

Но в вашей ситуации вам не нужно создавать второй клон. Ваша команда может быть переведена на это:

using (MagickImage image = new MagickImage("i:/YnTf9.png"))
{
    using (IMagickImage backgroundImg = image.Clone())
    {
        backgroundImg.Blur(0, 5);
        backgroundImg.Crop(400, 300, Gravity.Center);
        backgroundImg.RePage();

        // Resize the original image instead of creating a clone, resizing it and then
        // delete the original.
        image.Resize(0, 300);

        backgroundImg.Composite(image, Gravity.Center, CompositeOperator.SrcOver);
        backgroundImg.Write("i:/result.png");
    }
 }

Не могли бы снова помочь мне с преобразованием командной строки на C#? stackoverflow.com/questions/49240712

StealthRT 12.03.2018 22:24

Похоже, вы единственный, кто знает, как преобразовать командную строку в .net. Не могли бы вы мне помочь с указанным выше URL?

StealthRT 15.03.2018 01:45
Ответ принят как подходящий

Понятно

using (MagickImage image = new MagickImage(bitmap))
    {
        using (IMagickImage backgroundImg = image.Clone())
        {
            backgroundImg.Blur(0, 5);
            backgroundImg.Crop(400, 300, Gravity.Center);
            backgroundImg.RePage();

            image.Resize(0, 300);

            IMagickImage _shadow = new MagickImage(MagickColor.FromRgb(0, 0, 0), image.Width + 20, 400);
_shadow.Shadow(backgroundImg.Width, 400, 10, (Percentage)90);

            backgroundImg.Composite(_shadow, Gravity.Center, CompositeOperator.Atop);
            backgroundImg.Composite(image, Gravity.Center, CompositeOperator.SrcAtop);
            backgroundImg.Write(@"C:\Users\David\Pictures\NEWest.png");
        }
    }

Другие вопросы по теме