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