python-fu выберите копировать вставить
Я новичок в python-fu, (мой второй день), поэтому мой вопрос может показаться наивным: я хотел бы выбрать прямоугольную часть из "r400r.png", повернуть ее на 90 градусов и сохранить свой выбор в "r400ra.png".
Пока что я попробовал кое-что в этих строках:
for fv in range(400,401):
fn='r%sr.png' % fv
img=pdb.gimp_file_load('/path/'+fn,fn)
drw=pdb.gimp_image_get_active_layer(img)
img1=pdb.gimp_image_new(1024,1568,0)
lyr=pdb.gimp_layer_new(img1,1024,1568,0,'ly1',0,0)
pdb.gimp_rect_select(img,10,200,1422,1024,2,0,0)
drw=pdb.gimp_rotate(drw,0,1.570796327)
pdb.script_fu_selection_to_image(img1,drw)
f0=fn[:5]+'a'+fn[5:]
pdb.gimp_file_save(drw,'/path/'+f0,f0)
Слой "lyr" есть, потому что, насколько я понимаю, это необходимо, хотя мне не понятно, почему. Цикл for в конечном итоге должен массово обрабатывать кучу файлов; для тестирования он ограничен только одним файлом. Я получаю ошибку, когда пытаюсь выполнить "script_fu_selection_to_image".
Можете ли вы указать мне, пожалуйста, в правильном направлении?
Спасибо, SxN
1 ответ
PDB призывает сделать это лучше в следующем порядке:
# import your image:
img=pdb.gimp_file_load('/path/'+fn,fn)
#make the selection
pdb.gimp_rect_select(img,10,200,1422,1024,2,0,0)
# copy
pdb.gimp_edit_copy(img.layers[0])
# (no need to "get_active_layer" - if
# your image is a flat PNG or JPG, it only has one layer,
# which is accessible as img.layers[0])
# create a new image from the copied area:
new_img = pdb.gimp_paste_as_new()
#rotate the newly created image:
pdb.gimp_image_rotate(new_img, ...)
#export the resulting image:
pdb.gimp_file_save(new_img, ...)
#delete the loaded image and the created image:
# (as the objects being destroyed on the Python side
# do not erase then from the GIMP app, where they
# stay consuming memory)
pdb.gimp_image_delete(new_img)
pdb.gimp_image_delete(img)