Преобразование цвета с помощью функции Fx в Magick.NET

Я пытаюсь сделать какое-то преобразование цвета с помощью функции Fx, но это не работает.

Если я использую это выражение внутри функции Fx

"rgb((1-u.r)*255,128,128)"

результат - черное изображение. Фактическое преобразование является более сложным, но я не могу заставить работать даже этот простой.

Если я использую

"rgb(0,128,128)"

В результате получается одноцветное изображение, как и ожидалось.

Возможно, в моем выражении есть какая-то фундаментальная ошибка, но я ее не вижу. Кто-нибудь может мне помочь?

1 ответ

Решение

Использование rgb(...) в fx предназначено только для указания уникального цвета, а не для вычислений. Вы должны сделать что-то вроде этого:

using (MagickImage image = new MagickImage("Input.png"))
{
  // Evaluate is faster if you just want to set a pixel to a value
  image.Evaluate(Channels.Green | Channels.Blue, EvaluateOperator.Set, 128);
  image.Fx("(1-u.r)*255", Channels.Red);
  image.Write("Output.png");
}
Другие вопросы по тегам