我正在尝试使用 Fx 功能进行一些颜色转换,但它不起作用。
如果我在 Fx 函数中使用这个表达式
"rgb((1-u.r)*255,128,128)"
结果是黑色图像。实际的转换更复杂,但我什至无法让这个简单的转换工作。
如果我使用
"rgb(0,128,128)"
结果是预期的纯色图像。
我的表达中可能有一些根本性的错误,但我看不到。有谁能够帮我?
我正在尝试使用 Fx 功能进行一些颜色转换,但它不起作用。
如果我在 Fx 函数中使用这个表达式
"rgb((1-u.r)*255,128,128)"
结果是黑色图像。实际的转换更复杂,但我什至无法让这个简单的转换工作。
如果我使用
"rgb(0,128,128)"
结果是预期的纯色图像。
我的表达中可能有一些根本性的错误,但我看不到。有谁能够帮我?
在 fx 中使用 rgb(...) 仅用于指定唯一颜色,而不用于进行计算。你必须做这样的事情:
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");
}