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á propuseram e até mesmo implementaram alternativas à linguagem Scheme
1, 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 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 scripts 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 mostraremos, será um plugin simples que fará pipocar uma mensagem na tela, utilizando nosso amigo PDB, encontraremos 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/python
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()
A 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 - a lista de parâmetros de entrada na linha 16 está vazia, como não manipularemos imagens com este nosso exemplo, não temos necessidade de passar estes 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/usuário 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.
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 GIMP
3 ou leia a documentação sobre Python no GIMP
4.
Este artigo foi cedido para a revista digital
PZPZine - Ed Fev 2008 e originalmente encontrado em
http://cleberjsantos.com.br.
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