Преобразование цвета с помощью функции 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");
}