GIMP script (ni ez naiz inozoa)

Gure lantokian prestatu genuen mekanografia ikasteko webgune batera erabiltzaileak erakartzeko, webgunea aurkeztuko genuen azokarako gonbidapen batzuk prestatzea erabaki genuen. Handik pasatzen ziren kuxkuxeroek hartu eta webgunea probatzeko erabiltzaile bat izan zezaten. Webgunean 100 erabiltzaile sortu genituen, bakoitza bere ausazko pasahitzarekin. Ondoren, erabiltzaile eta pasahitz desberdin horiek gonbidapenaren diseinuan txertatu behar ziren. Irudiak editatzeko existitzen den programa BAKARRAren (Fotoxop deitu diot, izen bat emateagatik…) bidez egin beharreko lana (ez baitago alternatiba onik, ezta?), eskuz ez baita ez polita eta ez profesionala geldituko.

Bulegoan norbait hagitz aspertua balego ere dudatzen dut lan hau egiteko bere burua eskeintzea, baino norbaitek egin beharko du. Agertu dugu martiria. Ederki, egina. Kosta da, baino 100 fitxetan txertatu ditugu erabiltzaile eta pasahitzak. Aix, diseinuko letra mota aldatu dugu… Aix, 100 gonbidapen gehiago prestatu behar dira… Aix, pasahitz seguruagoak sortu behar dira.

Gizaki arrunt batek, irudi guzti horiek eskuz aldatu beharko lituzke banaka banaka, baino informatikariok ez gara inozoak (?!) eta solas bat heldu zaigu burura: script. Nahiz eta ziurrenik denbora gehiago beharko dugun prozesu hau automatizatzeko eskuz egiteko baino, bukaeran klik bakarrarekin egin ahal izanen dugu, hurrengo aldietarako orduetako lana segunduetan eginez.

Fotoxop ez dut batere kontrolatzen, uste dut script-ak egiteko aukera baduela, baino ez nago ziur. GIMPen erabiltzailea naiz eta badakit, zalantzarik gabe, scripting-a onartzen duela. GIMPen kasuan Plug-in bat sortuko dugu, erabiltzaile izen eta pasahitzak csv formatuko fitxategi batetik irakurri eta irudian txertatuko dituena. Plug-in hauek Perl edo Python bidez sortzeko aukera dago, nik Python aukeratu dut.

GIMPeko script batek hiru zati ditu: Exekutatu nahi dugun kodea, kode hori GIMPen prozeduretan erregistratzea eta kode guzti hau martxan paratzea:

Kodea sortu

GIMPek bere prozedura (funtzio) guztiak PDB (Procedural DataBase) izeneko aldagaiaren bidez eskuragarri ditu. PDB honek eskeintzen dizkigun prozedura guztiak Laguntza->Prozedura arakatzialean-n aurkitzen ahal ditugu. Hor aurkituko ditugun prozedurak python-en erabiltzeko, ‘-‘ zeinua ‘_’ zeinuaz ordezkatu beharko dugu, adibidez:

GIMP-image-new ageri den lekuan pdb.GIMP_image_new idatziko dugu python fitxategian.

Akabo teoria, adibide ttiki bat eginen dugu: skript.py izeneko fitxategi bat sortu. gimpfu izeneko modulua inportatu (hemen dago PDB aldagaia eta geroago azalduko ditugun bertze hainbat gauza), funtzio bat sortu eta bere gorputzean PDBko GIMP_message funtzioari deituko diogu. Funtzio honekin, mezua erakutsiko digun leiho bat agertuko da:

1
2
3
4
import gimpfu

def hasi():
gimpfu.pdb.GIMP_message('Kaixo GIMP!')

Prozeduretan erregistratu

Zati honen bidez, GIMP eta gure script-aren arteko zubia sortuko dugu. Scripta GIMPen menutik eskuragarri izateko modua da hau.

Sortu berri dugun funtzio hori GIMPek exekutatu ahal izateko, aipatutako PDB horretan erregistratu behar dugu. Horretarako, gimpfu paketean dagoen register funtzioari deitu behar zaio ondorengo parametroekin

  • prozedura izena: GIMPentzat gure prozeduraren identifikatzailea, bakarra izan behar du
  • definizioa
  • laguntza testua
  • data
  • sortzailea
  • copyright
  • menupath: Prozedurari deitzeko agindua zein menutan txertatuko den
    • Programan zabalik dagoen irudi bati aplikatuko bazaio <Image> testuarekin hasi behar du: <Image>/Kaixo/GIMP. Hau aukeratzen badugu, goian sortu dugun hasi funtzioak bi parametro hartuko ditu. Unean zabalik dagoen Image motakoa lehenengoa eta Drawable motakoa bigarrena. Modu sinple batean errateko, Image xcf fitxategia bera izanen da eta Drawable bere barruko irudiak (kapak, kolore kanalak…)
    • Ez bazaio irudi bati aplikatuko (nire kasuan bezala, karpeta bateko irudi guztiei, adibidez), <Toolbox> testuarekin hasi behar du: <Toolbox>/Kaixo/GIMP
  • irudi mota (‘’, ‘‘, ‘RGB’, ‘RGBA’, ‘RGB‘, ‘GRAY’…)
    • hemen ‘’ balioaren desberdina den zerbait jarriz gero, GIMPen irudi bat kargatu arte ez digu plugin hau exekutatzen utziko. Izan ere, irudi mota bat behar duela adierazten diogu. Beraz, nire goiko adibiderako, ‘’ utziko dut
  • parametroak
    • gure funtzioari pasatu nahi dizkiogun parametroak. Nire hasierako adibidean, tamaina aldatu nahi diegun irudiak dauden karpetaren helbidea.
  • emaitzak
    • gure funtzioak itzuliko dituen balioen zerrenda. Nire kasuan hutsa izanen da
  • exekutako den funtzioaren izena

Gure skript.py fitxategian ondorengo hau gehituko dugu:

1
2
3
4
5
6
7
8
9
10
11
12
13
gimpfu.register(
"errepikatu_gabeko_prozedura_izena",
"saludatuko gaituen plugin bat",
"laguntza!",
"josu",
"copyright",
"2018",
"<Image>/Kaixo/GIMP",
"*",
[],
[],
hasi
)

Martxan paratzea

Goiko guztia egin ondoren, gimpfu-ri lanean hasteko erran behar diogu, horretarako gimpfu.main() funtzioari deitu behar diogu.

Beraz, nola gelditu zaigu skript.py? Kodea arintze aldera, ez dugu behin eta berriz gimpfu.* idatziko, from gimpfu import * egin eta kitto

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
from gimpfu import *

# gogoratu `register`-en <Image> paratu dugunez, hemen bi parametro hartuko dituela
def hasi(image, drawable):
pdb.GIMP_message('Kaixo ' + image.filename + '!')

register(
"errepikatu_gabeko_prozedura_izena",
"saludatuko gaituen plugin bat",
"laguntza!",
"josu",
"copyright",
"2018",
"<Image>/Kaixo/GIMP",
"*",
[],
[],
hasi
)

main()

Probatu ere egin beharko da, ezta? Fitxategi hau hartu eta GIMPen pluginak dauden karpetan gorde behar dugu. Non dagoen karpeta hori? GIMPek berak du erantzuna: Editatu->Hobespenak->Karpetak->Pluginak. Zerrenda horretan ageri den karpetaren batean sartu gure skript.py eta GIMP berrabiarazi. Goiko menuan, ‘Kaixo’ elementua agertuko da eta bere barruan GIMP. GIMP elementua ez badago klikagarri!! Lasai, irudirik ez duzulako sortu gertatu zaigu hori, gogoratu <Image> moduan dugula. Edozein .xcf fitxategi ireki (edo berria sortu) eta saiatu berriro.

PDBn erregistratu ondotik

Kodea sortu atalean aipatutako PDB arakatzailera joan eta bilaketa kutxan sortu berri duzun prozeduraren izena idatzi eta sortutako funtzioa ikusi beharko zenuke.

Konbinazioak

Probatu register funtzioan ondorengo konbinazioak eta ea zein emaitza lortzen duzuen.

  • <Image> eta ‘*’
  • <Image> eta ‘’
  • <Toolbox> eta ‘*’ (gogoratu: <Toolbox> izanda hasi funtzioak ez dituela bi parametroak hartuko)
  • <Toolbox> eta ‘’ (gogoratu: <Toolbox> izanda hasi funtzioak ez dituela bi parametroak hartuko)

Nire arazoaren ebazpena

Hasieran aipatutako arazoa lantzen ari nintzela, lankide batek izan zuen ikuspegitik aurkeztuko dut ebazpena. Euskal Herriko zein herritan ez da herri bazkari baterako tonbola/rifa/zozketa/deitunahiduzunbezala bat antolatzen? Horretarako boleto pila bat inprimatu eta egun batzuk lehenago lagun kuadrila bat bildu eta eskuz zenbakiak idazten arratsalde-pasak antolatu? Plan ederra. Ba nahi izanez gero, script hau erabiltzen ahal duzue sozializatzeko plan eder hori zapuzteko. Diseinuan zenbakia txertatu nahi duzun testu kutxa sortu beharko duzu eta ‘zenb’ izena eman.

Eguneraketa

Baliagarriak izan daitezkeen hainbat script:

  • Irudi bateko kapak banan banan JPG formatuan gordetzeko: lotura.
  • Karpeta batean dauden formatu bateko irudiak eskalatzeko: lotura.