본문 바로가기

김프(Gimp) 사용법

python-FU 기본2. 매크로 작성 예제

반응형

글 작성 현재 김프버전: 2.10.22

 

이전글의 "hello world" 예제를 수정하여
실제로 매크로 스크립트를 만드는 과정을 나열해 본다.

 

만들고자 하는 매크로

  1. 이미지에 알파채널 추가.
    • 김프는 이미지를 읽어들이면 알파채널을 자동으로 추가하지 않아서 수동으로 추가해 주어야 한다.
    • 레이어를 마우스 우클릭 한뒤 (H)알파채널 추가 를 클릭한다.
  2. 이미지의 레벨을 일정한 수치로 조정.
    • 이미지에 따라 두종류의 레벨값중에 선택해서 적용하는 작업이 많다.
    • 메뉴바의 [색 > 레벨] 또는 단축키를 설정하여 레벨메뉴를 연다.
    • 입력/출력 레벨값과 감마값을 원하는 양으로 조절 또는 프리셋에 등록한 설정을 선택하여 실행한다.
  3. 녹색배경(크로마키) 선택
    • 컬러선택 도구로 임계값을 70 정도로 맞추고 녹색을 클릭한다.
  4. 선택한 색상을 지운다.

위의 네가지 작업을 한번의 버튼으로 실행하는 매크로를 만들려고 한다.

매크로 없이 수동으로 하게되면 매 이미지마다 다음과 같은 과정을 거친다.

위의 작업을 버튼 한번으로 실행하는 매크로를 만들어 보자.

 

스크립트 기본틀

# coding: utf-8

from gimpfu import *

def alpha_level(image, drawable):
    

register(
    "python-fu-alpha-level",
    "알파추가 레벨적용",
    "알파채널 추가하고 레벨값 선택 적용",
    "그림그리는호랑이", "horangi.co.kr", "2020.11",
    "알파와레벨",
    "",
    [
        (PF_IMAGE, "image", "takes current image", None),
        (PF_DRAWABLE, "drawable", "Input layer", None)
    ],
    [],
   	alpha_level,
    menu="<Image>/MyScript"
)

main()

 

  1. 스크립트 이름은 "alpha_level"로 설정.
  2. 메뉴에 보여질 메뉴이름은 "알파와레벨"로 설정.

 

알파채널 추가 스크립트 추가

def alpha_level(image, drawable): 아래에 스크립트를 추가한다.

#선택된 레이어에 알파채널 추가
pdb.gimp_layer_add_alpha(drawable)

 

두 가지의 레벨형식 선택 라디오버튼 추가

register 안의 파라미터 입력부분에 라디오버튼 UI를 추가한다.

(PF_RADIO, "gmode", "선명도 유형", 1,
  (
    ("선택1", 1),
    ("선택2", 2)
  )
)
  1. 라디오버튼 대화상자 제목 : "선명도 유형"
  2. 변수이름 : gmode
  3. 기본값 : 1
  4. 라디오버튼
    • 이름 : "선택1", 선택값 : 1
    • 이름 : "선택2", 선택값 : 2

라디오버튼 으로 선택한 gmode 값을 메인함수(alpha_level)에서 받을수 있도록 인자를 포함 시킨다.

def alpha_level(image, drawable, gmode):

 

선택한 항목에 따른 레벨값 적용하여 이미지 레벨작업 스크립트 추가

def alpha_level(image, drawable): 에 스크립트 추가

1. gmode 값에 따라 레벨 요소값 책정

if gmode == 1:
	gamma = 0.74
	in_high = 191
elif gmode == 2:
	gamma = 0.66
	in_high = 227

 

2. 책정된 레벨 요소값을 이미지에 적용 스크립트

pdb.gimp_levels(
  drawable,
  0,
  0,
  in_high,
  gamma,
  0,
  255
)

 

pdb.gimp_levels()의 매개변수는 [파이썬콘솔 > 찾아보기] 에서 다음과 같이 확인할 수 있다.

 

지금까지의 전체 스크립트

# coding: utf-8

from gimpfu import *

def alpha_level(image, drawable, gmode):
    pdb.gimp_layer_add_alpha(drawable)
    
    if gmode == 1:
		gamma = 0.74
		in_high = 191
    elif gmode == 2:
		gamma = 0.66
		in_high = 227
        
    pdb.gimp_levels(
		drawable,
		0,
		0,
		in_high,
		gamma,
		0,
		255
	)

register(
	"python-fu-alpha-level",
	"알파추가 레벨적용",
	"알파채널 추가하고 레벨값 선택 적용",
	"그림그리는호랑이", "horangi.co.kr", "2020.11",
	"알파와레벨",
	"",
	[
		(PF_IMAGE, "image", "takes current image", None),
		(PF_DRAWABLE, "drawable", "Input layer", None),
		(PF_RADIO, "gmode", "선명도 유형", 1,
			(
				("선택1", 1),
				("선택2", 2)
			)
		)
	],
	[],
	alpha_level,
	menu="<Image>/MyScripts"
)

main()

 

위와같은 방식으로

1. 뒷 배경색상을 "컬러로 선택" 메뉴로 선택하고
2. 선택된 범위를 지우기

두가지의 스크립트를 [파이썬콘솔 > 찾아보기]를 이용하여
함수를 찾아내어 스크립트를 작성한다.

완성된 매크로를 메뉴로 등록하여 실행하면 아래와 같다.

반응형