본문 바로가기
기타/무료포토샵 gimp 튜토리얼

[GIMP] 파이썬으로 플러그인 만들기③: 워크플로우 자동화 기초

by 일코 2023. 1. 31.

지난 포스팅 말미에서는

사용자변수의 image와 drawable 파라미터를 통해
각각 김프의 프로젝트파일, 활성화된 레이어에 접근할 수 있다는 점을 알아보았습니다.

2023.01.31 - [기타/무료포토샵 gimp 튜토리얼] - [GIMP] 파이썬으로 플러그인 만들기②: image와 drawable 다루기 기초

 

[GIMP] 파이썬으로 플러그인 만들기②: image와 drawable 다루기 기초

지난 포스팅에서는 김프의 오류 로그창에다 "Hello, world!"를 찍어보았습니다. 우리가 만든 플러그인이 제대로 작동한다는 걸 직접 확인해보았어요. 2023.01.30 - [기타/무료포토샵 gimp 튜토리얼] - [GIM

martinii.fun

기본이 되는 부분만 간략히 짚어본 정도지만
이제 복잡한 워크플로우를 자동화하는 데 필요한
충분한 기초를 다졌다고 생각이 되네요.


그래서 이번 포스팅에서는
간단한 프로세스를 자동화하는 과정을 진행해보겠습니다.

아래와 같은 이미지를

변경 전

이렇게 바꿔보려고 합니다.

김프에서 기본제공하는 Pixelize Blur 필터입니다.

먼저, 이 과정을 스크립트로 추출해보겠습니다.

파이썬 콘솔의 Browse 버튼을 눌러
스크립트 목록을 연 후에
"pixel"을 검색합니다.

plug-in-pixelize를 찾았습니다.

아쉽게도 이 pixelize 프로시저는 offset이나 ratio 옵션을 사용할 수 없게 되어 있네요..ㅜ

하단의 Apply 버튼을 눌러 명령어를 추출한 후
복사해서 파이참에 붙여넣습니다.

이걸 복사해다가

def pixelize(image, drawable):
    pixel_width = 10
    pdb.plug_in_pixelize(image, drawable, pixel_width)
    # pdb.plug_in_pixelize(image=image, drawable=drawable, pixel_width=10) 식으로 작성하면 오류남!
이렇게 함수를 작성했습니다. 픽셀 크기는 가로세로 10px입니다.

 

다음은 register 함수를 작성할 차례입니다.

저는 아래와 같이 작성해보았습니다.

register(
    proc_name="pixelize",
    blurb="pixelize(10x10)",
    help="pixelize image composed by 10x10 pixels",
    author="일코",
    copyright="일상의 코딩",
    date="2023-01-31",
    label="_Pixelize",  # 밑줄 뒤의 알파벳이 컨텍스트 단축키가 됨
    imagetypes="",
    params=[
        (PF_IMAGE, "image", "takes current image", None),
        (PF_DRAWABLE, "drawable", "Input layer", None),
    ],
    results=[],
    function=pixelize,
    menu="<Image>/_Plugins"
)

 

완성된 코드는 아래와 같습니다.

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


from gimpfu import *


def pixelize(image, drawable):
    pixel_width = 10
    pdb.plug_in_pixelize(image, drawable, pixel_width)


register(
    proc_name="pixelize",
    blurb="pixelize(10x10)",
    help="pixelize image composed by 10x10 pixels",
    author="일코",
    copyright="일상의 코딩",
    date="2023-01-31",
    label="_Pixelize",
    imagetypes="",
    params=[
        (PF_IMAGE, "image", "takes current image", None),
        (PF_DRAWABLE, "drawable", "Input layer", None),
    ],
    results=[],
    function=pixelize,
    menu="<Image>/_Plugins"
)

main()

 

이제 김프를 열어서
플러그인을 실행해볼까요?

의도한 대로 플러그인이 잘 작동합니다.

끝.

 

마치며

사실 현 시점에서는
Filter - Blur - Pixelize 메뉴를 실행하나
Plugins - Pixelize 메뉴를 실행하나 별반 차이가 없습니다.

python-fu의 진짜 강점은
여러 프로시저 워크플로우를
클릭 한 번에, 또는 명령어 한 줄만으로
자동으로 처리하는 데 있으니까요.

그럼 다음 포스팅에서는
다중 명령을 한 번에 수행하는
보다 실용적인 예제를 가지고 
튜토리얼을 진행해보겠습니다.
파일을 여러개 선택할 수 있는 다이얼로그도 하나 붙여봅시다.

 

다음 포스팅은

2023.01.31 - [기타/무료포토샵 gimp 튜토리얼] - [GIMP] 파이썬으로 플러그인 만들기④: 플러그인에 단축키 지정하기

 

[GIMP] 파이썬으로 플러그인 만들기④: 플러그인에 단축키 지정하기

자주 쓰는 워크플로우를 python-fu를 통해 플러그인으로 만들었을 때, 단축키를 지정해놓고 간편하게 쓰고 싶을 때가 있죠. 하지만 GIMP의 Edit - Keyboard Shortcuts 메뉴에서는 플러그인에 단축키를 붙일

martinii.fun

 

 


국내 유일의 파이썬+한컴오피스 자동화 강의

 

움짤로 빠르게 배우는 파이썬-아래아한글 자동화 레시피 - 인프런 | 강의

파이썬으로 아래아한글을 다루는 짧은 예제코드들을 소개하고, 중간중간의 결과를 GIF로 보여드립니다. 동영상 강의가 아니지만 오히려 빠르게 배울 수 있고, 따라하기도 쉽습니다., - 강의 소개

www.inflearn.com

 

댓글