如何在 GIMP C 插件中使用 GEGL 缩放颜色通道

问题描述

我正在尝试在 Gimp C 插件中使用 GEGL。我想要的是缩放 R、G、 和 B 值分别用于某个矩形。

我尝试了下面的代码片段,但它没有更新任何像素(drawable_id、x1、y1、宽度、高度在此代码之外定义

GeglBuffer *img_buffer = gimp_drawable_get_buffer(drawable_id);
GeglBuffer *shadow_buffer = gimp_drawable_get_shadow_buffer(drawable_id);

Geglrectangle sub_img;
gegl_rectangle_set(&sub_img,x1,y1,width,height);
GeglColor *col = gegl_color_new("");  // Todo: use free to free or g_object_unref?
gegl_color_set_rgba(col,0.1,0.5,0.7,1);
gegl_buffer_set_color(shadow_buffer,&sub_img,col);

gegl_render_op(img_buffer,shadow_buffer,"gegl:multiply",NULL);
    
g_object_unref(img_buffer);
g_object_unref(shadow_buffer);
gimp_drawable_merge_shadow(drawable_id,TRUE);  // what kind of merge is this
anyway?

gimp_drawable_update(drawable_id,height);
gimp_displays_flush();
gegl_exit();

我做错了什么?

enter link description here 处的文档 声明“..使用'value'中提供的常量或 aux 上缓冲区中的相应像素作为操作数。”但也许不是 可以将每个颜色通道与一个单独的值相乘 gegl:乘以?在这种情况下,我想知道改用什么函数

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)