gimp python-fu 사용

gimp를 사용하면, 마우스를 많이 클릭해야 한다. 대부분 노가다인데, python-fu를 사용하면 반복 작업을 대폭 줄일 수 있다.

필터 메뉴에서 python 콘솔을 열 수 있다. 해당 코드를 테스트할 경우 유용하나, 약간 긴 코드의 경우 script 파일을 만들어 실행함이 편하다. 다른 파일의 탭을 콘솔에 붙일 수 없다.

코드를 만든 후, 아래 옵션으로 실행이 가능하다. 여기를 참조했다.

Execute 2: gimp -idf --batch-interpreter=python-fu-eval -b - < save-xcf-to-png-02.py

  • 배치 인터프리터를 python-fu 설정.
  • 입력으로 스크립트 설정.

아래 참조한 사이트에 있는  save-xcf-to-png-02.py 파일이다.

# Note required here, see: /usr/lib/gimp/2.0/plug-ins/python-eval.py
# from gimpfu import *
from glob import glob

def convert(filename):
  print "Filename: " + filename
  img = pdb.gimp_file_load(filename, filename)
  new_name = filename.rsplit(".",1)[0] + ".png"
  layer = pdb.gimp_image_merge_visible_layers(img, 1)

  pdb.gimp_file_save(img, layer, new_name, new_name)
  pdb.gimp_image_delete(img)

for filename in glob("*.xcf"):
  convert(filename)

pdb.gimp_quit(1)

내가 하려는 작업은 2개 점이 찍힌 레이어를 랜덤수치만큼 이동하여 약 100개정도 이미지를 만듦이다. gimp 이미지 원본 파일에 배경, 점이 찍힌 레이어가 있다. 아래와 같이 간단한 코드로 50개를 금방 만들 수 있다.

#-*- coding: utf-8 -*-
import random
from gimpfu import *

#python-fu console에 직접 붙일 수 없어 아래 방식으로 명령어 실행.
#>> gimp -idf --batch-interpreter=python-fu-eval -b -< !!!!!여기에 파일 이름 입력!!!

i=0

img = pdb.gimp_file_load("/home/now0930/gimpScript/basicForm.xcf","/home/now0930/gimpScript/basicForm.xcf")


#점 2개가 찍힌 레이어. 점 2개를 임의의 위치로 이동.
layer = img.layers[1]

for i in range(1,50):
    x_new = random.randrange(-5,5)
    y_new = random.randrange(-5,5)
    x_off, y_off = layer.offsets

    pdb.gimp_layer_translate(layer, x_new-x_off, y_new-y_off)

    new_image = pdb.gimp_image_duplicate(img)
    new_layer = pdb.gimp_image_merge_visible_layers(new_image, CLIP_TO_IMAGE)
    i=i+1
    filename = '/home/now0930/gimpScript/Spec2/spec%d.png'%(i,)
    pdb.gimp_file_save(new_image, new_layer, filename,'?')
    pdb.gimp_image_delete(new_image)

    #원래 위치로 이동.
    pdb.gimp_layer_translate(layer, x_new+x_off, y_new+y_off)

파일 이름을 입력으로 하는 방법도 있겠지만, 나만 쓸 스크립트이므로, 그냥 직접 경로를 넣었다.

코멘트

댓글 남기기

이 사이트는 Akismet을 사용하여 스팸을 줄입니다. 댓글 데이터가 어떻게 처리되는지 알아보세요.