Ir para o conteúdo
ou

Software livre Brasil

 Voltar a Porão do Tri...
Tela cheia

Gimp Python Plugin – Criando uma nova imagem

30 de Agosto de 2010, 0:00 , por Software Livre Brasil - 0sem comentários ainda | Ninguém está seguindo este artigo ainda.
Visualizado 333 vezes
Este é o primeiro de uma série de tutoriais sobre Gimp Python-Fu, ou seja plugin para gimp escritos em Python, como a documentação original do Python-Gimp é muito pequena, pretendo traduzi-la e expandi-la, gerando assim uma boa documentação em português, mas este é o objetivo do trabalho como um todo, neste momento falaremos sobre a forma de criação de uma nova imagem.

Existem uma série de funções no módulo gimp que são usadas para criar objetos e construir uma imagem no GIMP. Aqui esta uma lista com descrições destes construtores.

gimp.Image(largura, altura, tipo)

Esta função cria uma nova imagem, que não é mostrada, com as dimensões (em pixels) e tipo.

Uma camada deve ser criada e adicionada antes da imagem ser mostrada, ou a chamada à ‘gimp-display-new‘ com a imagem como argumento irá falhar. Camadas podem ser criadas usando a função ‘gimp.layer’ citada logo abaixo. Elas podem ser adicionadas a imagem usando ‘image.add_layer‘, passando a camada e a sua posição.

Os tamanhos devem ser maiores que 1 e menos que 262144 (somente números inteiros)

Tipo da imagem pode ser

RGB ( 0 ) – colorido

GRAY (1 ) - Tons de cinza

INDEXED ( 2) - cores indexadas ou seja, imagens com tabela de cores.

Este é um procedimento interno do Gimp (gimp-image-new).

Esta função funciona de forma diferente do procedimento interno do Gimp, ela retorna o objeto da imagem, enquanto função interna do Gimp retorna o ID da nova imagem criada.

Exemplo de código de criação de imagem:

myImage = gimp.Image( 100, 100 , GRAY) #cria imagem em modo de cinza
 
myLayer = gimp.Layer( myImage, 'myLayer', 50, 50, GRAY_IMAGE , 50, NORMAL_MODE) #cria camada
 
myImage.add_layer(myLayer,-1) #adiciona camada a imagem
 
gimp.Display(myImage) #mostra a imagem
 
# meus testes na versão  GIMP 2.6.8 mostram que não é necessário chamar o displays_fllush
 
#gimp.displays_flush()

gimp.Layer(img, nome, largura, altura, tipo, opacidade, modo)

Cria uma camada que será chamada por nome, com as dimensões e tipo definidos ( uma das constantes *_IMAGE ), opacidade ( número de ponto flutuante entre 0 a 100) e o modo (uma das constantes *_MODE ). A camada pode ser adicional a imagem usando a função img.add_layer. Repare que ela não é adicionada automaticamente a imagem atual. Outros atributos como máscara, e offsets podem ser chamadas quando necessário.

Os tipos de camada possíveis são, repare que originalmente estas constantes tinha “-” como separador, no Python o separador é “_”.

RGB_IMAGE (0)

RGBA_IMAGE (1)

GRAY_IMAGE (2)

GRAYA_IMAGE (3)

INDEXED_IMAGE (4)

INDEXEDA_IMAGE (5)

Os modos de combinação de camadas possíveis são:

NORMAL_MODE (0)

DISSOLVE_MODE (1)

BEHIND_MODE (2)

MULTIPLY_MODE (3)

SCREEN_MODE (4)

OVERLAY_MODE (5)

DIFFERENCE_MODE (6)

ADDITION_MODE (7)

SUBTRACT_MODE (8)

DARKEN_ONLY_MODE (9)

LIGHTEN_ONLY_MODE (10)

HUE_MODE (11)

SATURATION_MODE (12)

COLOR_MODE (13)

VALUE_MODE (14)

DIVIDE_MODE (15)

DODGE_MODE (16)

BURN_MODE (17)

HARDLIGHT_MODE (18)

SOFTLIGHT_MODE (19)

GRAIN-EXTRACT_MODE (20)

GRAIN_MERGE_MODE (21)

COLOR_ERASE_MODE (22)

ERASE_MODE (23)

REPLACE_MODE (24)

ANTI_ERASE_MODE (25)

A chamada a função retorna o objeto da camada.

O código completo do plugin que gera uma imagem em tons de cinza:

#! /usr/bin/python
 
__author__="Eduardo 'Trialforce' Bonfandini"
__date__ ="$29/08/2010 14:53:06$"
 
from gimpfu import *
 
def pythonPluginExample(img, tdrawable):
 """Gimp example plugin"""
 
 myImage = gimp.Image( 100, 100 , GRAY )
 myLayer = gimp.Layer( myImage, 'myLayer', 50, 50, GRAY_IMAGE , 50, NORMAL_MODE)
 myImage.add_layer(myLayer,-1)
 gimp.Display(myImage)
 #gimp.displays_flush()
 
register(
 "python_fu_pluginExample",
 "Example Plugin",
 "Example Plugin Ilustrated how to do things",
 "Eduardo 'Trialforce' Bonfandini",
 "Eduardo 'Trialforce' Bonfandini",
 "2010",
 "<Image>/Filters/Generic/_PluginExample...",
 "RGB*, GRAY*",
 [],
 [],
 pythonPluginExample)
 
main()

O Resultado gerado pelo script:

O Link para o meu repositório de plugin/teste/exemplos de Python-Gimp.

http://code.google.com/p/trialforce/source/browse/trunk/python/pluginGimp/

Abraço a todos.

Construtores e remoção de objetos

Existem uma série de funções no módulo gimp que são usadas para criar objetos e construir uma imagem no GIMP. Aqui esta uma lista com descrições destes construtores.

gimp.Image(largura, altura, tipo)
Esta função cria uma nova imagem, que não é mostrada, com as dimensões (em pixels) e tipo.
Uma camada deve ser criada e adicionada antes da imagem ser mostrada, ou a chamada à ‘gimp-display-new’ com a imagem como argumento irá falhar. Camadas podem ser criadas usando a função ‘gimp.layer’ citada logo abaixo. Elas podem ser adicionadas a imagem usando ‘image.add_layer’, passando a camada e a sua posição.
Os tamanhos devem ser maiores que 1 e menos que 262144 (somente números inteiros)
Tipo da imagem pode ser
RGB ( 0 ) – colorido
GRAY (1 ) – Tons de cinza
INDEXED ( 2) – cores indexadas ou seja, imagens com tabela de cores.
Este é um procedimento interno do Gimp (gimp-image-new).
Esta função funciona de forma diferente do procedimento interno do Gimp, ela retorna o objeto da imagem, enquanto função interna do Gimp retorna o ID da nova imagem criada.
Exemplo de código de criação de imagem:
myImage = gimp.Image( 100, 100 , GRAY) #cria imagem em modo de cinza
myLayer = gimp.Layer( myImage, ‘myLayer’, 50, 50, GRAY_IMAGE , 50, NORMAL_MODE) #cria camada
myImage.add_layer(myLayer,-1) #adiciona camada a imagem
gimp.Display(myImage) #mostra a imagem
# meus testes na versão GIMP 2.6.8 mostram que não é necessário chamar o displays_fllush
#gimp.displays_flush()
gimp.Layer(img, nome, largura, altura, tipo, opacidade, modo)
Cria uma camada que será chamada por nome, com as dimensões e tipo definidos ( uma das constantes *_IMAGE ), opacidade ( número de ponto flutuante entre 0 a 100) e o modo (uma das constantes *_MODE ). A camada pode ser adicional a imagem usando a função img.add_layer. Repare que ela não é adicionada automaticamente a imagem atual. Outros atributos como máscara, e offsets podem ser chamadas quando necessário.
Os tipos de camada possíveis são:
RGB_IMAGE (0)
RGBA_IMAGE (1)
GRAY_IMAGE (2)
GRAYA_IMAGE (3)
INDEXED_IMAGE (4)
INDEXEDA_IMAGE (5)
Os modos de combinação de camadas possíveis são:
NORMAL_MODE (0)
DISSOLVE_MODE (1)
BEHIND_MODE (2)
MULTIPLY_MODE (3)
SCREEN_MODE (4)
OVERLAY_MODE (5)
DIFFERENCE_MODE (6)
ADDITION_MODE (7)
SUBTRACT_MODE (8)
DARKEN_ONLY_MODE (9)
LIGHTEN_ONLY_MODE (10)
HUE_MODE (11)
SATURATION_MODE (12)
COLOR_MODE (13)
VALUE_MODE (14)
DIVIDE_MODE (15)
DODGE_MODE (16)
BURN_MODE (17)
HARDLIGHT_MODE (18)
SOFTLIGHT_MODE (19)
GRAIN-EXTRACT_MODE (20)
GRAIN_MERGE_MODE (21)
COLOR_ERASE_MODE (22)
ERASE_MODE (23)
REPLACE_MODE (24)
ANTI_ERASE_MODE (25)
A chamada a função retorna o objeto da camada.

Fonte: http://trialforce.nostaljia.eng.br/?p=456

0sem comentários ainda

Enviar um comentário

Os campos são obrigatórios.

Se você é um usuário registrado, pode se identificar e ser reconhecido automaticamente.