Документация/соглашение об именах PDB довольно обратная, если вы пытаетесь делать что-то с python в gimp и трудно понять. В конце концов я нашел gimp.GroupLayer
(списки PDB gimp-layer-group-new
), чтобы создать новую группу слоев. Как вставить это в изображение, чтобы оно отображалось как группа слоев?
Я пробовал такие вещи:
img = gimp.image_list()[0]
gl = gimp.GroupLayer(img, "Should be a folder", 1, 1, 0)
img.insert_layer(gl)
Первое, что меня действительно смущает, это то, что он ожидает, что я укажу высоту и ширину для GroupLayer, хотя он должен просто действовать как контейнер для других реальных слоев (он ожидает этого, потому что он наследуется от Layer
, но это другой вопрос) .
Настоящая проблема заключается в том, что когда я вставляю только что созданный GroupLayer
, он отображается как обычный слой (без папки на значке слоя). Я проверил это, создав два слоя, один обычный слой и один составной слой. Я добавляю групповой слой к изображению, а затем пытаюсь добавить обычный слой к изображению с групповым слоем в качестве родителя:
img = gimp.image_list()[0]
gl = gimp.GroupLayer(img, "Group Layer", 1, 1, 0)
l = gimp.Layer(img, "Real Layer", 1, 1, 0)
img.insert_layer(gl)
img.insert_layer(l, gl) # gl should be the parent
Все, что я получаю, это ошибка:
Calling error for procedure 'gimp-image-insert-layer':
Item 'group layer #1' (34) cannot be used because it is not a group item`
Кто-нибудь еще понял это?
ОБНОВЛЕНИЕ
Жоао С. О. Буэно
Я только что исправил эту проблему в gimp-git. Frgom gimp 2.8.12 включен,
вызов gimp.GroupLayer работает с сигнатурой gimp.GroupLayer(img, [name="", opacity=100.0, mode=gimp.NORMAL_MODE])
.