Вы хотите что-то вроде:
pdb.gimp_drawable_curves_spline(layer,HISTOGRAM_VALUE,8,[0, 0, 0.37477797513321481, 0.12890625, 0.62344582593250431, 0.8828125, 1, 1])
Трюк
Вы можете позволить Gimp определить значения:
Используйте графический интерфейс и примените инструмент Curves к образцу:
На изображении выше обратите внимание на селектор «Presets» вверху. Каждый раз, когда вы применяете фильтр, Gimp сохраняет кривую, и вы можете получить ее с помощью селектора. По умолчанию кривая является анонимной (только с отметкой времени), но вы также можете дать ей имя (нажмите кнопку +
).
Эти значения сохраняются в файле в профиле Gimp. В Gimp 2.10 этот файл ${Gimp profile}/filters/GimpCurvesConfig.settings
. Если вы отредактируете его (вашему редактору может потребоваться поддержка длинных строк), вы увидите:
# settings
(GimpCurvesConfig "2019-11-08 21:57:15"
(time 1573246635)
(linear no)
(channel value)
(curve
(curve-type smooth)
(points 8 0 0 0.37477797513321481 0.12890625 0.62344582593250431 0.8828125 1 1)
(point-types 4 smooth smooth smooth smooth)
[...snip...]
Интересующая линия - та, которая начинается с (points ...
). Вам просто нужно преобразовать:
(points 8 0 0 0.37477797513321481 0.12890625 0.62344582593250431 0.8828125 1 1)
в:
... 8,[0, 0, 0.37477797513321481, 0.12890625, 0.62344582593250431, 0.8828125, 1, 1]
Вряд ли может быть проще.
Примечание:
Термин "кривые Безье""Это довольно случайно здесь. Для программного обеспечения это просто способ сгладить кривую, но вы только устанавливаете опорные точки. Важно то, что вы определяете функцию канала над самим собой: newChannelValue=f(oldChannelvalue)
и определяете f()
не с помощью математической формулы, а рисуя график функции.