Imagesharp在F#中变异

时间:2017-10-20 04:40:40

标签: f# imagesharp

我正在尝试使用ImageSharp编辑F#中的图片。我正在努力让图像突变工作

要在C#中进行图像变异,看起来好像只使用mutate method and a lambda

image.Mutate(x => x.Kodachrome())

通常,要将C#lambdas更改为F#,我只会使用匿名函数,如下所示:

image.Mutate(fun x -> x.Kodachrome())

当我这样做时,我收到以下错误:

  

方法'Mutate'没有重载匹配。可用的重载如下所示(或在错误列表窗口中)。

看起来Mutate方法需要一个ImageProcessor,但由于某种原因在F#中编译器无法弄清楚匿名函数是一个ImageProcessor。如何在F#中使用图像变异?

2 个答案:

答案 0 :(得分:5)

F#可以自动从匿名函数(fun ...)转换为System.Action<_>,但前提是这些类型完全匹配。在这里,他们没有,因为Kodachrome()没有返回unit。所以你需要忽略它的返回值:

image.Mutate(fun x -> x.Kodachrome() |> ignore)

答案 1 :(得分:2)

您需要将F#lambda明确转换为Action:

image.Mutate <| Action<_> (fun x -> x.Kodachrome ())