Imagesharp在F#中变异

Jac*_*lis 1 f# imagesharp

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

要在C#中进行图像变异,看起来你只需要使用mutate方法和lambda:

image.Mutate(x => x.Kodachrome())
Run Code Online (Sandbox Code Playgroud)

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

image.Mutate(fun x -> x.Kodachrome())
Run Code Online (Sandbox Code Playgroud)

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

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

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

Tar*_*mil 5

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

image.Mutate(fun x -> x.Kodachrome() |> ignore)
Run Code Online (Sandbox Code Playgroud)