QUINTO RELATÓRIO DE ESTUDOS 01 DE FEVEREIRO DE 2012 Aluno: Francisco Gerson Amorim de Meneses Orientadores: Helena C. G. Leitão / Marcos Lage Tema sugerido: Comparação de Técnicas para Segmentação de Imagens de Pinturas Rupestres USANDO O PYTHON PARA ESCREVER PLUG-INS PARA O GIMP INTRODUÇÃO Esse tutorial irá mostrar o uso da linguagem Python para a criação de plug-ins visando a automatização de tarefas na ferramenta para tratamento de imagens GNU Image Manipulation Program (GIMP). É possível instalar e usar o GIMP e o Python em diversas plataformas, incluindo Linux, Mac OS e Microsoft Windows. A natureza multiplataforma do GIMP e do Python permitem escrever plug-ins complexos para o GIMP usando Python, e executá-los em uma variedade de sistemas operacionais. Nesse trabalho utilizaremos o sistema operacional Windows 7 e a distribuição Linux Ubuntu. VISÃO GERAL DO GIMP [1] O GIMP é um software livre para manipulação de imagens usado por muitas pessoas como uma alternativa viável a algumas das ofertas comerciais. Tem recursos complexos, como camadas por exemplo. Suporta diversos formatos de imagem e vem com filtros relativamente complexos. O GIMP tem forte apoio e envolvimento da sua comunidade, de modo que geralmente é fácil encontrar informações sobre como usá-lo ou estendê-lo. VISÃO GERAL DE SCRIPTS EM PYTHON [1] Python é uma linguagem de script orientada a objeto, que permite escrever códigos que podem ser executados em diversas plataformas. Foi portado para máquinas virtuais.net e Java, de modo que há muitas maneiras de executá-la. Existem muitos módulos para Python que fornecem funcionalidades que podem ser reutilizadas sem a necessidade de escrever seus próprios módulos (os módulos GIMP- Python são um exemplo). Um índice dos módulos Python lista diversos módulos prédesenvolvidos que podem ser usados para executar uma variedade de tarefas, desde lidar com linguagem de marcação de hipertexto (HTML) e conexões de Protocolo de transporte de Hipertexto (HTTP) ao trabalho com arquivos em Linguagem de Marcação Extensível (XML). Também é possível criar seus próprios módulos Python, permitindo a reutilização de partes de código.
Similar ao GIMP, o Python também tem suporte significativo da sua comunidade. Isso significa que é possível encontrar informações, bem como baixar e usar ferramentas relativamente maduras que auxiliam seu desenvolvimento em Python. COMO INSTALAR O GIMP NO WINDOWS 7 COM SUPORTE A PYTHON [2] A instalação do GIMP-Python (Python-Fu), no Windows 7, requer alguns detalhes a serem observados, veremos a seguir uma sequência de ações para se fazer essa integração: A princípio a instalação do GIMP no Widows não contempla o suporte a Python, podemos conferir isso no Menu Filtros: Na instalação do GIMP no Windows é comum não aparecer o suporte a Python (Python-Fu) Se o GIMP já tiver sido instalado e não tiver o Python-Fu é necessário desinstalar o GIMP e proceder da seguinte forma: 1 Baixar os softwares: - GIMP na versão 2.6.11 (pode ser português): http://downloads.sourceforge.net/gimp-win/gimp-2.6.11-i686-setup-1.exe - Python 2.6.6 (pode ser a versão mais recente do 2.6): http://www.python.org/ftp/python/2.6.6/python-2.6.6.msi - PyGtk (deve ser compatível com a versão do Python): http://ftp.gnome.org/pub/gnome/binaries/win32/pygtk/2.22/pygtk-all-in-one-2.22.6.win32-py2.6.msi Obs: algumas outras versões dos softwares foram testadas, porém não funcionaram. 2 Instalar inicialmente o Python: Ao instalar o Python é importante selecionar a opção Install for all users conforme figura abaixo
3 Em seguida, instalar o PyGTK, atentando para que sejam selecionados os módulos: PyCairo, PyGtk e PyGObject: 4 Finalmente, instalar o GIMP. Como o Python foi instalado antes, automaticamente o GIMP irá reconhecer. Seguir a instalação normalmente e verificar no menu Filtros:
GIMP NO LINUX UBUNTU Ao instalar o Gimp no Linux automaticamente já vem com suporte ao Python, a tela abaixo é da distribuição Ubuntu 10.04: O SUBMENU PYTHON-FU Após a instalação pode-se verificar no Menu Filtros o Submenu Python-Fu, por padrão, esse submenu contém apenas o console Python-Fu.[3]
Python-Fu é um conjunto de módulos Python que funcionam como um wrapper para a libgimp permitindo a escrita de plug-ins para o GIMP. [3] O console Python-Fu é uma janela de diálogo (um interpretador Python em modo interativo). Este console está configurado para fazer uso das rotinas da biblioteca libgimp. [3] Pode-se usar o console Python-Fu interativo para testar comandos Python. O console é composto por uma janela com barra rolagem para entrada e saída, onde se podem digitar comandos Python. Quando digita um comando Python e pressiona Enter, o comando é executado pelo interpretador Python. A saída do comando, bem como seu valor de retorno (e sua mensagem de erro, se houver) será exibida na janela principal. [3] No exemplo abaixo, alguns comandos são executados no console, esses comandos são referentes à imagem que está aberta no GIMP (foto13.jpg), pode-se destacar: a identificação da imagem, o nome das camadas (layer), a resolução da imagem e a criação de uma nova camada (Rupestre). [5] Identificação da imagem Nome das camadas da imagem Resolução da Imagem Criação de nova camada Rupestre Importante destacar a função do botão Browse..., ao clicar nesse botão tem-se acesso a todas as funções do GIMP e suas extensões que estão registradas no banco de dados interno (PDB Data Base Procedure). [4]
Por exemplo, ao escolher a função gimp-layer-new tornou possível - após a inserção dos parâmetros - a criação da camada Rupestre. Ao escolher a função clica no botão Aplicar. [5] ESCREVENDO PLUGIN S Para escrever os plugin s pode-se usar o IDLE (Python GUI) um editor Python mais completo e que já vem no pacote de instalação do Python:
ESTRUTURA BÁSICA DO PLUGIN 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. O exemplo acima é simples, porém funcional, utilizando o PDB, será encontrada a função gimp_image_flip(), que é utilizada para girar a imagem. O método para registro do plugin requer 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(). [6] ONDE SALVAR O PLUGIN No Windows, os arquivos com código Python (*.py) devem ser colocados na pasta: No Ubuntu, os arquivos com código Python (*.py) devem ser colocados na pasta:
USANDO O PLUGIN A PARTIR DO MENU [7] A linha 7 do registro "<Image>/Filters/Exemplo", mostra o caminho no menu Filtros onde o plugin Exemplo deve ser encontrado: Ao clicar no submenu Exemplo será executada a ação de giro horizontal na imagem, conforme a função pdb.gimp_image_flip(image, ORIENTATION_HORIZONTAL): Acima, a imagem é rotacionada horizontalmente.
REFERÊNCIAS BIBLIOGRÁFICAS [1] - http://www.ibm.com/developerworks/br/library/os-autogimp/#resources [2] - http://www.gimpusers.com/tutorials/install-python-for-gimp-2-6-windows [3] - http://docs.gimp.org/2.6/c/gimp-filters-python-fu.html#python-fu-console [4] - http://docs.gimp.org/2.6/c/glossary.html#glossary-pdb [5] - http://www.exp-media.com/content/extending-gimp-python-python-fu-plugins-part-1 [6] - http://www.exp-media.com/content/extending-gimp-python-python-fu-plugins-part-2 [7] - http://www.cleberjsantos.com.br/pzp/escrevendo-scripts-no-gimp-pintando-a-cobra Outras Referências http://www.python.org/download/releases/2.6.6/ http://www.youtube.com/watch?v=fd36xs9okbi http://www.jamesh.id.au/software/pygimp/pygimp.html http://registry.gimp.org/node/186 http://www.jamesh.id.au/software/pygimp/ http://diogorbg.blogspot.com/2008/01/scripts-gimp-python-fu.html http://www.gimp.org/docs/python/index.html http://dgowers-tech.livejournal.com/4494.html http://www.python.org/download/ http://ftp.gnome.org/pub/gnome/binaries/win32/pygtk/2.22/ http://code.google.com/p/trialforce/source/browse/trunk/python/plugingimp/pluginex ample.py http://trialforce.nostaljia.eng.br/?p=456 http://code.google.com/p/trialforce/source/browse/trunk/python/plugingimp/