2013-12-12 3 views
2

Я новичок в python-fu (мой второй день), поэтому мой вопрос может показаться наивным: я хотел бы выбрать прямоугольную часть из «r400r.png», повернуть ее 90 градусов, и сохраните мой выбор в «r400ra.png».python-fu select copy paste

До сих пор я пытался что-то на этих линиях:

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) 

слой «Лир» находится там, потому что я понимаю, что это является обязательным, хотя это не ясно, почему. Цикл «for» в конечном итоге должен обрабатывать массу файлов; для тестирования он ограничивается только одним файлом. Я получаю сообщение об ошибке, когда я пытаюсь выполнить «script_fu_selection_to_image».

Можете ли вы указать мне, пожалуйста, в правильном направлении?

Спасибо, SXn

ответ

2

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) 
+0

Этот вопрос на два года, но ... с помощью 'каркасной v2.8.10' в Ubuntu , строка 'pdb.gimp_paste_as_new()' triggers 'error: procedure not found' – SebasSBM

+2

В gimp v2.8.10 эта функция теперь называется' pdb.gimp_edit_paste_as_new() ' – SebasSBM