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)
파일 이름을 입력으로 하는 방법도 있겠지만, 나만 쓸 스크립트이므로, 그냥 직접 경로를 넣었다.
댓글 남기기