有人可以发布一个关于如何在 c 代码中使用“gegl:weighted-blend”操作的代码示例,而不是带有 xml 文件(过滤器)的 gegl(终端)。
我开始使用 gegl 库,它完全符合我的需求,但我似乎找不到好的文档(该网站很好但不详细)。是否有论坛或地方可以在使用 gegl 库进行编程时寻求帮助?
如果它有帮助,这是我使用 gegl:weighted-blend 的试验:
GeglNode *gegl = gegl_node_new ();
GeglNode *display = gegl_node_create_child (gegl, "gegl:display");
GeglNode *over = gegl_node_new_child (gegl,"operation", "gegl:over",NULL);
GeglNode *c2g = gegl_node_new_child (gegl,"operation", "gegl:c2g",NULL);
GeglNode *blur = gegl_node_new_child (gegl,"operation", "gegl:gaussian-blur","std- dev-x",1.0,"std-dev-y",1.0,NULL);
GeglNode *img = gegl_node_new_child (gegl,"operation", "gegl:load","path","test.jpg",NULL);
GeglBuffer *buffer = NULL;
GeglNode *sink = gegl_node_new_child (gegl,"operation", "gegl:buffer-sink","buffer", &buffer,NULL);
gegl_node_link_many (img , c2g , sink, NULL);
gegl_node_process (sink);
GeglNode *blend = gegl_node_new_child (gegl,"operation", "gegl:weighted-blend","aux",buffer,"value",0.0,NULL);
gegl_node_link_many(img, blend, display, NULL);
//gegl_node_process (blend);
//gegl_node_link_many(blend, display, NULL);
gegl_node_process (display);
一点信息,在这个例子中我有一个 test.jpg 图像。我在上面应用了一个 c2g 过滤器,然后我尝试在没有 c2g 过滤器的情况下将它与自身混合。
c2g 和 gegl:buffer-sink 部分工作,这意味着我可以用灰度显示图像,并且缓冲区填充有灰度颜色的图像。
我究竟做错了什么?因为这个与 gegl:weighted-blend 组合的输出是一个空白屏幕。