(2013-10-17) [LatinoWare] Automatizando o GIMP com Python

326 visualizações

Publicada em

Slides da palestra apresentada na LatinoWare 2013. Segue abaixo o texto da proposta original realizada para o evento:

Mostra-se exemplos do que se pode conseguir com plug-ins de Python para o GIMP - e um roteiro de como criar seu próprio script Python para automatizar várias tarefas.

No mundo de edição de imagens é comum termos várias tarefas repetitivas - as vezes é necessário abrir centenas de imagens para executar um único filtro, em cada uma - Ou, partindo de um elemento de texto em uma imagem, aplicar mais de uma dezena de efeitos no texto até chegar no resultado desejado - e a cada mudança no texto, ter que repetir todo o processo.

Para esses e outros problemas, os aplicativos gráficos - e o GIMP não é exceção, possuem métodos de se fazer scripts - pequenos programas - em uma linguagem de programação que permita a automação desses passos.

Esta palestra mostra como fazer isso com a linguagem Python - que também é uma linguagem de automação usada pelo Inkscape, Blender 3D, Scribus e Libreoffice, dentre outros aplicativos.

Publicada em: Design
0 comentários
0 gostaram
Estatísticas
Notas
  • Seja o primeiro a comentar

  • Seja a primeira pessoa a gostar disto

Sem downloads
Visualizações
Visualizações totais
326
No SlideShare
0
A partir de incorporações
0
Número de incorporações
1
Ações
Compartilhamentos
0
Downloads
3
Comentários
0
Gostaram
0
Incorporações 0
Nenhuma incorporação

Nenhuma nota no slide

(2013-10-17) [LatinoWare] Automatizando o GIMP com Python

  1. 1. Foz do Iguaçu – PR – 2013-10-17 – Automatizando o GIMP com Python Danilo de Jesus da Silva Bellini / João Sebastião de Oliveira Bueno Automatizando o GIMP com Python Palestrante Danilo de Jesus da Silva Bellini danilo.bellini [at] gmail.com – Twitter: @danilobellini Proposta de João Sebastião de Oliveira Bueno gwidion [at] gmail.com – Twitter: @gwidion GIMP – http://www.gimp.org/ Python – http://python.org/ GIMP Python Documentation [by James Henstridge] http://www.gimp.org/docs/python/index.html
  2. 2. Foz do Iguaçu – PR – 2013-10-17 – Automatizando o GIMP com Python Danilo de Jesus da Silva Bellini / João Sebastião de Oliveira Bueno Python ● Multiparadigma – – Orientado a objetos – ● Imperativo/Estrutural Funcional/Descritivo Whitespaces têm significado – Delimitação de blocos ● Lembra pseudo-código ● Multiplataforma http://python.org/
  3. 3. Foz do Iguaçu – PR – 2013-10-17 – Automatizando o GIMP com Python Danilo de Jesus da Silva Bellini / João Sebastião de Oliveira Bueno Especificação e filosofia do Python ● PEPs (Python Enhancement Proposal) – ● http://www.python.org/dev/peps Documentação – http://docs.python.org – Tutorial feito pelo Guido ● ● Existe tradução para o português PEP20 – The Zen of Python import this
  4. 4. Foz do Iguaçu – PR – 2013-10-17 – Automatizando o GIMP com Python Danilo de Jesus da Silva Bellini / João Sebastião de Oliveira Bueno
  5. 5. Foz do Iguaçu – PR – 2013-10-17 – Automatizando o GIMP com Python Danilo de Jesus da Silva Bellini / João Sebastião de Oliveira Bueno
  6. 6. Foz do Iguaçu – PR – 2013-10-17 – Automatizando o GIMP com Python Danilo de Jesus da Silva Bellini / João Sebastião de Oliveira Bueno GIMP The GNU Image Manipulation Program ● Raster (Matricial) – ● “Image retouching and editing tool” “G” originalmente era “General” – 1995 – Início do desenvolvimento – 1996 – Primeira versão pública – S. Kimball e P. Mattis solicitaram a aprovação de R. Stallman para realizar a mudança – 1997 – GTK – The GIMP Tool Kit ● ● LGPL Licença [L]GPLv3+ – “The GIMP license has been changed to (L)GPLv3+.” http://www.gimp.org/release-notes/gimp-2.7.html
  7. 7. Foz do Iguaçu – PR – 2013-10-17 – Automatizando o GIMP com Python Danilo de Jesus da Silva Bellini / João Sebastião de Oliveira Bueno Automação do GIMP com Python Python-Fu ● Python-Fu / Script-Fu – ● Fu de “Kung Fu”, pode significar “intensidade” Scripts e console – – ● Filters → Python-Fu → Console Arquivos “.py” executáveis no diretório de plugins Mesma API do Script-Fu (Scheme) – Métodos de “pdb” – Nomes com “_” ao invés de “-” – Ignorar parâmetros de entrada “modo interativo”
  8. 8. Foz do Iguaçu – PR – 2013-10-17 – Automatizando o GIMP com Python Danilo de Jesus da Silva Bellini / João Sebastião de Oliveira Bueno Módulo gimpfu ● gimp ● pdb – Calculadora ● register – ● main “gimp” e “pdb” já foram importados – Autocomplete (TAB) – Comandos anteriores (↑) – Built-ins “help” e “dir” ● ● Constantes (nomes 100% em maiúsculas) – PF_INT – PF_BOOL – FG_BUCKET_FILL – … ● Console Script – ● from gimpfu import * O que é “pdb”?
  9. 9. Foz do Iguaçu – PR – 2013-10-17 – Automatizando o GIMP com Python Danilo de Jesus da Silva Bellini / João Sebastião de Oliveira Bueno Exemplos Console ● Lista – – ● Iterável gimp.image_list gimp.Image – – ● Métodos width e height Propriedade layers gimp.Layer – Método set_offsets ● – ● pdb.gimp_layer_set_offsets Métodos width e height Laço for – for elemento in iterável: – “:” (dois pontos) denota início de bloco Melhor detalhado nos próximos 2 slides
  10. 10. Foz do Iguaçu – PR – 2013-10-17 – Automatizando o GIMP com Python Danilo de Jesus da Silva Bellini / João Sebastião de Oliveira Bueno Exemplo (usando GIMP 2.8.2) 1 File → Create → Logos → Basic II – 2 Usar valores padrão Move Tool (Toolbox) – Mover os layers para qualquer lugar 3 Layer → New Layer – Width = 200 px – Height = 200 px – Layer Fill Type = Foreground color Como centralizar os layers na imagem?
  11. 11. Foz do Iguaçu – PR – 2013-10-17 – Automatizando o GIMP com Python Fil >>> pdb ter <gimp procedural Danilo de Jesus da Silva Bellini / João Sebastião de Oliveira Bueno database> s→ >>> imgs = gimp.image_list() Py >>> imgs # Uma lista (valores entre colchetes) tho n-F [<gimp.Image 'Untitled'>] u→ >>> img = imgs[0] Co >>> dir(img) # Usar com help também ns [... 'height', ..., 'layers', ..., 'width'] # Há mais informação ole >>> img.layers [<gimp.Layer 'SCRIPT-FU'>, <gimp.Layer 'Highlight'>, <gimp.Layer 'Shadow'>, <gimp.Layer 'Layer'>, <gimp.Layer 'Background'>] >>> len(img.layers) 5 >>> img.layers[0] <gimp.Layer 'SCRIPT-FU'> >>> dir(img.layers[0]) [... 'height', ..., 'set_offsets', ..., 'width'] # Há mais informação >>> img.layers[0].width 886 >>> for lay in img.layers: ... lay.set_offsets(int(.5 * (img.width - lay.width)), int(.5 * (img.height - lay.height))) ... >>> Padronização do script
  12. 12. Foz do Iguaçu – PR – 2013-10-17 – Automatizando o GIMP com Python Danilo de Jesus da Silva Bellini / João Sebastião de Oliveira Bueno Script ● Exemplos https://bitbucket.org/jsbueno/gimp_scripts – – Retângulos (rand_rects.py) – ● Centralizar layer (center_layer.py) Blur (progressive_blur.py) Instalação – Arquivo “.py” executável (chmod +x) – Localizado em “~/.gimp-2.8/plug-ins/” (ou equivalente) – Mensagens no console (debug)
  13. 13. Foz do Iguaçu – PR – 2013-10-17 gimp, pdb o constantes from gimpfu import * # register main,– Automatizando e GIMP com Python , Danilo de Jesus da Silva Bellini / João Sebastião de Oliveira Bueno def sua_funcao(img, drw): # Pode ter outros parâmetros (e.g., “tamanho”) # img: objeto gimp.Image # drw: objeto gimp.Layer # Operações (cuidado ao agrupar operações de “Undo” # e ao armazenar a seleção do usuário) gimp.displays_flush() # Atualiza a imagem visualizada Padronização do script register( proc_name = "sua_funcao", blurb = "blurb", help = "help", author = "Danilo J. S. Bellini", copyright = "GPLv3 - ", date = "2013", label = "<Image>/Python-Fu/ApenDanilo", imagetypes = "*", params = [ # (PF_INT, "tamanho", "Uma descrição aqui", 10), ], results = [], function = sua_funcao, #menu = None, # Implícito no "label" #domain = None, on_query=None, on_run=None, )
  14. 14. Foz do Iguaçu – PR – 2013-10-17 – Automatizando o GIMP com Python Danilo de Jesus da Silva Bellini / João Sebastião de Oliveira Bueno Obrigado! Perguntas?

×