Escrevendo scripts no GIMP, Pintando a cobra
Por
Cleber J Santos
em
07-01-2009 08:20
Muitos usuários e designers estão voltando a atenção para o GIMP quando precisam editar uma imagem, trocando softwares proprietários por este que é a grande atração do mundo livre quando o assunto é manipulação de imagens.
O GIMP – GNU Image Manipulation Program ou Programa GNU para Manipulação de Imagens – possui um belo cardápio de funções, e nem todos sabem que é possível automatizar tarefas repetitivas por meio de scripts escritos com a linguagem popular Python. Felizmente, o GIMP possui uma interface de programação integrada que permite aos usuários se aventurar em desenvolver scripts para facilitar o trabalho e automatizar tarefas, fãs de outras linguagens de programação já propôs e até mesmo implementarem alternativas a linguagem Scheme1 no qual em geral não era considerada nada prazerosa.
Há, por exemplo, uma interface para a linguagem Perl chamada de GIMP-Perl. Essa interface está tão avançada e bastante desenvolvida que é possível interpretar scripts e modificar imagens sem que a interface gráfica do GIMP tenha sido chamada. Você deve estar se perguntando: “E onde o Python entra?”, é simples, O Python já garantiu seu lugar como alternativa viável ao Scheme, o GIMP-Python2 está disponível em praticamente todas as distribuições Linux.
Tenha como seu melhor amigo a ferramenta PDB – Procedural Data Base(Figura 1), é o navegador para banco de dados de procedimentos, o PDB está localizado em Xtns | Python-Fu | PDB Browser (Extras | Python-Fu | PDB Browser). Ele lista as funções disponíveis para programadores de script's GIMP, Por exemplo, file_jpeg_load que carrega uma imagem no padrão jpeg no GIMP.

Figura 1: O navegador integrado de scripts do GIMP com o campo de busca no canto inferior esquerdo
A estrutura básica de um plugin em Python é muito simples, é usada uma chamada ao método register para que o novo plugin seja registrado no GIMP, e algumas funções que contemplam o serviço.
No exemplo que iremos mostar, será um puglin simples que dará pipocar uma mensagem na tela, utilizando nosso amigo PDB, iremos encontrar a função gimp_message, que possui apenas um parâmetro: A mensagem que desejamos exibir.
O método para registro do plugin register requer não menos que onze parâmetros, na seguinte ordem: nome do plugin, descrição, texto de ajuda, autor, dados de copyleft ou copyright, data, caminho no menu, formatos de imagens permitidos, parâmetros do puglin, buffer de memória para o valor de retorno e função de trabalho. A primeira chamada que o plugin recebe deve ser para o main().
Em nosso exemplo estamos usando o plugin chamado plugin_fu_simple, este é o nome que nós vamos usar para chamar o plugin depois do registro, então vejamos nosso exemplo de plugin:
Agora, crie uma nova imagem (File | New), deverá haver um item Python | Simple no menu de contexto. Obviamente este exemplo não faz nada de realmente útil, se você desejar se aprofundar em programação de scripts para o GIMP e criar modelos triviais, visite o site do GIMP3 ou leia a documentação sobre Python no GIMP4.
Há, por exemplo, uma interface para a linguagem Perl chamada de GIMP-Perl. Essa interface está tão avançada e bastante desenvolvida que é possível interpretar scripts e modificar imagens sem que a interface gráfica do GIMP tenha sido chamada. Você deve estar se perguntando: “E onde o Python entra?”, é simples, O Python já garantiu seu lugar como alternativa viável ao Scheme, o GIMP-Python2 está disponível em praticamente todas as distribuições Linux.
Tenha como seu melhor amigo a ferramenta PDB – Procedural Data Base(Figura 1), é o navegador para banco de dados de procedimentos, o PDB está localizado em Xtns | Python-Fu | PDB Browser (Extras | Python-Fu | PDB Browser). Ele lista as funções disponíveis para programadores de script's GIMP, Por exemplo, file_jpeg_load que carrega uma imagem no padrão jpeg no GIMP.

Figura 1: O navegador integrado de scripts do GIMP com o campo de busca no canto inferior esquerdo
A estrutura básica de um plugin em Python é muito simples, é usada uma chamada ao método register para que o novo plugin seja registrado no GIMP, e algumas funções que contemplam o serviço.
No exemplo que iremos mostar, será um puglin simples que dará pipocar uma mensagem na tela, utilizando nosso amigo PDB, iremos encontrar a função gimp_message, que possui apenas um parâmetro: A mensagem que desejamos exibir.
O método para registro do plugin register requer não menos que onze parâmetros, na seguinte ordem: nome do plugin, descrição, texto de ajuda, autor, dados de copyleft ou copyright, data, caminho no menu, formatos de imagens permitidos, parâmetros do puglin, buffer de memória para o valor de retorno e função de trabalho. A primeira chamada que o plugin recebe deve ser para o main().
Em nosso exemplo estamos usando o plugin chamado plugin_fu_simple, este é o nome que nós vamos usar para chamar o plugin depois do registro, então vejamos nosso exemplo de plugin:
01 #!/usr/bin/pythonA Listagem acima mostra um exemplo simples mas funcional de nosso plugin, a função do plugin é chamada python_fu_simple (linha 08), a função de trabalho sempre tem parâmetros img e drawable (linha 04), que o GIMP automaticamente passa à função – alista de parâmetros de entrada na linha 16 está vazia, como não iremos manipular imagens com este nosso exemplo, não temos necessidades de passar este parâmetros, a linha 04, mostra como carregar o módulo GIMP no Python. Para testar o exemplo que acabamos de desenvolver, salve a listagem (Sem os números), no diretório ~/.gimp/plug-ins, com o nome de simple.py, possivelmente o diretório do GIMP em seu /home/SeuUsuario pode estar com um nome diferente, como .gimp-2.2 ou coisa parecida. Torne o script executável (chmod +x simple.py) e inicie o GIMP.
02 from gimpfu import *
03
04 def python_simple(img, drawable):
05 gimp.message("Exemplo Simples")
06
07 register(
08 "python_fu_simple",
09 "Mostra uma caixa de diálogo.",
10 "Ajuda: Mostra uma caixa de diálogo simples.",
11 "Cleber J Santos",
12 "PZPZine",
13 "2008",
14 "<Image>/Python/Simple",
15 "*",
16 [],
17 [],
18 python_simple)
19 main()
Agora, crie uma nova imagem (File | New), deverá haver um item Python | Simple no menu de contexto. Obviamente este exemplo não faz nada de realmente útil, se você desejar se aprofundar em programação de scripts para o GIMP e criar modelos triviais, visite o site do GIMP3 ou leia a documentação sobre Python no GIMP4.
1 Scheme: http://www.teach-scheme.org/Notes/scheme-faq.html
2 PyGimp: ftp://ftp.daa.com.au/pub/james/pygimp/
3 GIMP: http://www.gimp.org
4 Documentação sobre Python no GIMP: http://www.gimp.org/docs/python/structure-of-plugin.html