콘텐츠로 바로가기

now0930 일지

이런저런 생각

  • 홈
  • 비공개
  • 강좌
  • 잔여 작업 조회
  • 위치

gimp python-fu 사용

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)

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

이 글 공유하기:

  • Tweet
발행일 2018-08-17글쓴이 이대원
카테고리 생활코딩 태그 gimp, python-fu

댓글 남기기응답 취소

이 사이트는 Akismet을 사용하여 스팸을 줄입니다. 댓글 데이터가 어떻게 처리되는지 알아보세요.

글 내비게이션

이전 글

비상하는 용 베트남

다음 글

이희수 교수의 이슬람

2025 6월
일 월 화 수 목 금 토
1234567
891011121314
15161718192021
22232425262728
2930  
5월    

최신 글

  • common mode, differential mode 2025-05-11
  • signal conditioner, 신호 처리기 2025-05-10
  • strain gage 2025-05-09
  • 칼만 필터 2025-05-01
  • positioner(I/P) 2025-04-26

카테고리

  • 산업계측제어기술사
  • 삶 자국
    • 책과 영화
    • 투자
  • 생활코딩
    • LEGO
    • ROS
    • tensorflow
  • 전기기사
  • 피아노 악보

메타

  • 로그인
  • 엔트리 피드
  • 댓글 피드
  • WordPress.org

페이지

  • 소개
  • 잔여 작업 조회
    • 작업 추가
    • 작업의 사진 조회
    • 작업 수정 페이지
  • 사진
    • GPS 입력된 사진
    • 사진 조회
  • 위치
    • 하기 휴가 방문지
    • 해외 출장

태그

android bash c docker driver FSM gps java kernel LEGO linux mysql network program opcua open62541 plc programmers python raspberry reinforcementLearning ros state space system program tensorflow transfer function 경제 미국 민수 삼국지 세계사 실기 에너지 역사 유전자 일본 임베디드 리눅스 전기기사 조선 중국 채윤 코딩 테스트 통계 한국사 한국어

팔로우하세요

  • Facebook
now0930 일지
WordPress로 제작.