2013-03-18 1 views
4

김프로 이미지를 파이썬에서 저장하는 데 문제가 있습니다. 나는 이미지를 얻고 내가 원하는 효과를 적용 할 수는 있지만 저장할 때 모든 레이어가 아닌 한 레이어 만 저장하면됩니다 (참고 : 배경이 투명 함). 배경이 투명하기 때문에 저장할 수 없습니다. 투명 한 배경입니다. 내가 사용하고있는 코드는 아래에 게시 :김프 Python-fu 파일 내보내기 전용 투명 레이어 내보내기

image_array = gimp.image_list() 
i=0 
for image in image_array: 
    img = image_array[i] 
    layers = img.layers 
    last_layer = len(layers)-1 
    try: 
     disable=pdb.gimp_image_undo_disable(img) 
     pdb.gimp_layer_add_alpha(layers[0]) 
     drw = pdb.gimp_image_active_drawable(img) 
     pdb.plug_in_colortoalpha(img,drw,(0,0,0)) 
     drw = pdb.gimp_image_active_drawable(img) 
     enable = pdb.gimp_image_undo_enable(img) 

    except: 
     print "ERROR" 

    pdb.file_png_save(img, drw, "C:\\Users\\jammer\\Desktop\\test.png", 
         "test.png",0,9,1,1,1,1,1) 
    i+=1 

가 나는 또한 file_png_save2을 시도했지만, 난 그냥 파일 -> 내보내기을 클릭의 옵션을 복제 할 나는이 문제를 느끼는 것은 DRW 객체에 달려있다 GUI를 통해 PNG로 저장하지 않아도됩니다. 차라리 자동으로 저장하는 것이 좋습니다. 49 개의 이미지가 있고 각 이미지는 자동으로 이름이 지정됩니다.하지만 먼저 이미지를 올바르게 내보내려면 이미지를 가져와야합니다. 위에서 말했듯이 위의 코드는 투명한 배경 만 내 보내며 심지어 GIF로 변경해도 문제가 해결되지 않습니다. 모든 레이어와 투명한 배경을 유지하면서 파일을 PNG로 내보내려면 어떻게해야합니까?

답변

3

내 문제를 발견했습니다! 보이는 레이어를 병합하지 않고 새 레이어와 동일하게 설정했는데 png로 이미지를 저장할 때 "드로어 블 오브젝트"로 사용했습니다! 모든 레이어를 병합

image_array = gimp.image_list() 
i=0 
for image in image_array: 
    img = image_array[i] 
    layers = img.layers 
    last_layer = len(layers)-1 
    try: 
     disable=pdb.gimp_image_undo_disable(img) 
     pdb.gimp_layer_add_alpha(layers[0]) 
     drw = pdb.gimp_image_active_drawable(img) 
     pdb.plug_in_colortoalpha(img,drw,(0,0,0)) 
     layer = pdb.gimp_image_merge_visible_layers(img, gimpfu.CLIP_TO_IMAGE)#FIXES PROBLEM OF ONLY EXPORTING TRANSPARENCY! 
     enable = pdb.gimp_image_undo_enable(img) 

    except: 
     print "ERROR" 

    pdb.file_png_save2(img, layer, "C:\\Users\\jammer\\Desktop\\test.png","test.png",1,9,1,1,1,1,1,0,1) 
    i+=1 
+0

을 할 수있는 방법입니다 -하지만 당신은 단지의 경우, 이미지는 "일회용"입니다 당신에 같은 것을 원하는 - 레이어를 병합 한 후이 : 나는 아래의 고정 코드를 게시 돌아갈 필요가 없습니다 (김프에서 "실행 취소"에 대한 호출이 없습니다). 일반적인 방법은'pdb.gimp_image_duplicate'를 호출하고 복제본에서 레이어 병합을 수행하는 것입니다. – jsbueno