본문 바로가기

김프(Gimp) 사용법

GIMP3 Python 스크립트(python-FU) 기본틀

반응형

 

#!/usr/bin/env python3
# -*- coding: utf-8 -*-

import gi
gi.require_version('Gimp', '3.0')
from gi.repository import Gimp
gi.require_version('GimpUi', '3.0')
from gi.repository import GimpUi
from gi.repository import GObject
from gi.repository import GLib
from gi.repository import Gtk
import sys

plug_in_proc   = "plug-in-vitneum-py3-scriptName"
plug_in_binary = "py3-scriptName"

# 스크립트 처리 본문
def scriptName_run(procedure, run_mode, image, drawables, config, data):
	# 다이얼로그 팝업
	GimpUi.init(plug_in_binary)
	dialog = GimpUi.ProcedureDialog.new(procedure, config, "다이얼로그 제목")
	# 다이얼로그 팝업안의 그룹
	box = dialog.fill_box("그룹이름", ["arg이름", "arg이름"])
	box.set_orientation (Gtk.Orientation.HORIZONTAL)
	# 다이얼로그 내용 배치
	dialog.fill(["그룹이름"])

	if not dialog.run():
		dialog.destroy()
		return procedure.new_return_values(Gimp.PDBStatusType.CANCEL, None)
	else:
		dialog.destroy()

	## 작업할 내용
  # 다이얼로그 에서 값 전달받기
	# 변수명 = config.get_property('arg이름')
	# .....

	return procedure.new_return_values(Gimp.PDBStatusType.SUCCESS, None)

# 기본설정
class scriptName (Gimp.PlugIn):
	def do_query_procedures(self):
		return [ plug_in_proc ]
	
	def do_create_procedure(self, name):
		procedure = None

		if name == plug_in_proc:
			procedure = Gimp.ImageProcedure.new(self, name,
                                                Gimp.PDBProcType.PLUGIN,
                                                scriptName_run, None)
			procedure.set_menu_label("메뉴명")
			procedure.add_menu_path('<Image>/MyScript/')
			procedure.set_documentation("짧은설명",
                                        "긴설명",
                                        name)
			procedure.set_attribution("Vitneum", "Vitneum", "2025")

			# 값 입력 다이얼로그 항목들 예제
			# procedure.add_int_argument("arg이름", "입력받을 값 제목", None,
			# 							 최소값, 최대값, 기본값, GObject.ParamFlags.READWRITE)

			# procedure.add_boolean_argument ("arg이름", "입력받을 값 제목",
			#	                              "자세한 설명",
			#                                 기본값(True/False), GObject.ParamFlags.READWRITE)

			# procedure.add_brush_argument ("brush", "_Brush", "Brush", True,
			# 								Gimp.Brush.get_by_name ("2. Hardness 025"),
			# 								False,
			# 								GObject.ParamFlags.READWRITE)
			
			# procedure.add_font_argument ("font", "_Font", "Font", True,
			# 								Gimp.Font.get_by_name ("Serif"),
			# 								False,
			# 								GObject.ParamFlags.READWRITE)
			
			# procedure.add_gradient_argument ("gradient", "_Gradient",
			# 									"Gradient", True,
			# 									Gimp.Gradient.get_by_name ("Incandescent"),
			# 									False,
			# 									GObject.ParamFlags.READWRITE)
			
			# procedure.add_palette_argument ("palette", "_Palette",
			# 									"Palette", True,
			# 									Gimp.Palette.get_by_name ("Default"),
			# 									False,
			# 									GObject.ParamFlags.READWRITE)
			
			# procedure.add_pattern_argument ("pattern", "Pa_ttern",
			# 								"Pattern", True,
			# 								Gimp.Pattern.get_by_name ("Paper"),
			# 								False,
			# 								GObject.ParamFlags.READWRITE)

			# export_format_choice = Gimp.Choice.new()
			# export_format_choice.add("png", 1, "png", "png")
			# export_format_choice.add("jpg", 2, "jpg", "jpg")
			# procedure.add_choice_argument("format", "_Format",
			# 								"Format", export_format_choice, "png",
			# 								GObject.ParamFlags.READWRITE)

		return procedure

Gimp.main(scriptName.__gtype__, sys.argv)

 

[참조]
https://testing.developer.gimp.org/resource/writing-a-plug-in/tutorial-python/

 

GIMP Developer - Python Plug-Ins

Python Plug-Ins Both our libgimp and libgimpui libraries are introspected thanks to the GObject-Introspection project. It means that the Python API is actually nearly exactly the same as the C library, except it follows Python language idiosyncrasies. For

testing.developer.gimp.org

 

반응형