본문 바로가기

김프(Gimp) 사용법

python-FU 기본

반응형

글 작성 현재 김프버전: 2.10.22

 

김프(Gimp)에서 매크로 기능을 사용하기 위해서는
"매크로 녹화" 와 같은 기능은 없고 "프로그래밍"을 통한 "스크립트"를 작성하여 사용한다.

김프에서 매크로 기능을 가능하게 하는 스크립트는 두가지가 있다.

  1. script-FU : 김프 초기버전 부터 사용해오던 기본적인 스크립트.
  2. python-FU : 파이썬 언어를 사용하는 새로운 스크립트.

이중에서 python-FU의 기본을 정리해 본다.

먼저 이름그대로 기본적인 파이썬 지식이 있어야 한다.
본인도 이전까지는 파이썬을 접해보지 않았으며
김프에 매크로 기능을 사용하기 위해 이번에 처음으로 접하게 되었다.
다행이도 다른 프로그래밍 언어와 큰 차이가 없어 적응하는데 별 문제는 없었다.
(script-FU를 사용하기 위해서는 Scheme 이라는 형식의 문법을 사용하는데,
그 문법은 참으로 눈에 적응되지 않았다.)

 

python-FU 로 할수있는 것

김프의 모든 기능을 스크립트로 작성하여
새로운 메뉴로 등록시켜 놓고 사용할 수 있다.

Hello World

#!/usr/bin/env python
# coding: utf-8

from gimpfu import *

def NAME_OF_MAIN_FUNCTION(image, drawable):
    # 이곳에 수행할 스크립트를 작성한다
    pdb.gimp_message("hello world")

register(
    "python-fu-NAME-OF-MAIN-FUNCTION",
    "간단한 소개",
    "긴 설명/도움말",
    "작성자", "카피라잇", "작성일",
    "메뉴명",
    "", # 이미지타입 (*, RGB, RGB*, RGBA, GRAY 등...)
    [
    	# 함수에 전달할 파라미터들
        # 파라미터 기본형식: (UI_객체, "변수명", "표기항목", 기본값)
         (PF_IMAGE, "image", "선택된 이미지", None),
         (PF_DRAWABLE, "drawable", "작업 레이어", None)
        # 위 두 파라미터는 기본적으로 항상 포함되어야 한다.
        # (PF_SLIDER, "slider", "슬라이더", val, (min, max, step))
        # (PF_SPINNER, "spinner", "스피너", val,  (min, max, step))
        # (PF_RADIO,"radioval", "선택", val,
        #	(
        #   	("항목1", 1),
        #		("항목2", 2)
        #   )
        # )
        # (PF_OPTION, "optval", "선택", 0, ["옵션1", "옵션2"])
        # 등등.....
    ],
    [],
    NAME_OF_MAIN_FUNCTION,
    menu="<Image>/Filters"
)

main()

 

  1. #!/usr/bin/env python
    • 김프 내부에서 사용할 스크립트라는걸 등록한다(?)
    • 위 한줄이 없어도 실행 되기는 하나, 파이썬 콘솔창과 함께 실행된다.
    • 리눅스환경에선 없어도 콘솔창없이 실행되는데, 윈도우에서는 넣어주어야 콘솔창없이 실행된다.
  2. # coding: utf-8
    • 문서의 인코딩을 지정해 준다.
    • 없을경우 기본적으로 ASCII 로 간주한다.
  3. from gimpfu import *
    • 김프모듈을 불러온다.
    • 김프 내부의 모든 기능을 사용할 준비과정.
  4. def NAME_OF_MAIN_FUNCTION(image, drawable):
    • 새로만들 함수(메뉴)를 정의한다.
    • "NAME_OF_MAIN_FUNCTION" 부분에 새로운 함수이름을 지정한다.
    • 이 함수 내부에 하고자 하는 작업의 스크립트를 작성한다.
    • image: 현재 작업하고 있는 이미지의 ID.
    • drawable: 현재 작업하고 있는 레이어 또는 선택영역 등의 ITEM.
  5. register()
    • 메뉴에 등록한다.
    • 함수에 전달할 파리미터를 받을 대화상자들을 지정한다.
  6. menu = "<Image>/Filters/MyScript"
    • 메뉴의 위치를 정한다.
    • "<Image>"가 김프의 메인 메뉴 최상단 이며, 위의 예는 "필터"탭의 "MyScript"라는 항목에 등록이 된다.
    • "MyScript" 라는 항목이 없을경우 항목이 저절로 만들어진다.
    • 최상단에 새로운 메뉴탭을 만들려면 "<Image>/MyScript"등으로 하면 된다.
  7. 스크립트 설치
    • 작성한 스크립트는 확장자를 py로 하여 저장한다.
    • 김프의 plugins 폴더에 작성한 파일을 넣어준다.
      • plugins폴더는 김프 메뉴바의 [편집 > 기본설정 > 폴더 > Plug-ins] 를 클릭하면 확인할 수 있다.

위의 예제가 정상적으로 등록되면,
김프의 [필터 > MyScript] 안에 "메뉴명" 이라는 메뉴가 보이게 된다.
"메뉴명"을 클릭하면 오류콘솔탭 에 "hello world"가 표기된다.

"오류콘솔탭"은 좌우 도구모음탭 한곳에 작은 삼각형 모양의 버튼을 클릭하고 [탭추가 > 오류콘솔]을 선택하여 탭을 추가해 놓으면 볼수있다.

참고사항

  1. 구문오류, 오타 등 에러가 있는 스크립트는 메뉴에 등록되지 않는다.
    • 메뉴에 보이지 않고 어디서 오류가 나는지 모를때에는
      김프를 터미널에서 실행하여 오류메세지를 확인한다.
  2. 리눅스의 경우 py 파일을 "프로그램으로 실행" 가능하도록 해줘야 한다.
    • 파일탐색기로 해당파일을 [오른쪽클릭 > 속성 > 권한] 에서 "프로그램으로 실행 허용"에 체크 하거나
    • 터미널에서 해당위치로 간다음 "sudo chmod +x *.py"를 실행한다.
  3. 등록된 메뉴의 스크립트 수정은 김프를 재시작 하지 않아도 바로 적용된다.
    • 메뉴에 정상적으로 등록된 스크립트는 그 파일을 열어 수정을 하고 저장을 하면
      김프를 재시작 하지 않고도 메뉴를 실행하여 바로 변경된 결과를 확인할 수 있다.
  4. 실행할 수 있는 김프의 기능들은 파이썬 콘솔에서 찾아볼 수 있다.
    • 파이썬콘솔 열기 : [필터 > python-FU > 콘솔] 클릭.
    • 콘솔창 아래의 [찾아보기]버튼을 클릭한다.
    • 검색어를 입력하여 기능함수를 찾는다.
    • 찾아진 함수의 함수명과 파라미터 등을 확인하여 스크립트를 작성한다.

 

 

python-FU 기본학습 참고 사이트

www.gimp.org/docs/python/index.html#WHAT-IS-IT

 

Gimp Python Documentation

Gimp Python Documentation v0.4, 5 July 1999 This document outlines the interfaces to Gimp-Python, which is a set of Python modules that act as a wrapper to libgimp allowing the writing of plug-ins for Gimp. In this way, Gimp-Python is similar to Script-Fu,

www.gimp.org

jacksonbates.wordpress.com/python-fu-gimp-scripting-tutorial-pages/

 

Python Fu GIMP Scripting Tutorial Pages

As a long time fan and tutorial creator for the Gnu Image Manipulation Program, affectionately known as GIMP, and a hobbyist programmer, I have always wanted to be able to write GIMP plug-ins to au…

jacksonbates.wordpress.com

 

반응형