Os grãficos gerados no ambiente do Processing podem ser salvos nos formatos PDF, tiff, jpeg ou PNG. A qualidade ou resolução está associada ao tamanho ou size() determinado para o sketch. Neste turotial, veremos como exportar uma sequência de imagens (arquivos PDF)  geradas em tempo real.

 

Salvando sequência de imagens (animação) no formato PDF:

Neste exemplo, faremos uma animação simples baseada na movimentação do mouse. Vamos lembrar que o efeito de animação pode ser feito com a função draw() , bastando variar alguns parâmetros dos objetos gráficos como posição, cor, transformações ou dimensões:

void setup() {
size (600,600);
}

void draw() {
background (255);
stroke (0,20);
strokeWeight(20);
line (mouseX,0,width-mouseY,height);
}

Experimentando esse sketch, podemos observar a movimentação da linha conforme o movimento do mouse. Agora, acrescentamos um código (em negrito) que possibilita o ”save” de vários frames dessa movimentação no formato PDF:

 

import processing.pdf.*;

boolean salvar=false;
void setup() {
size (600,600);
}

void draw() {
if (salvar==true) {
beginRecord(PDF, “linha-###.pdf”);
}

background (255);
stroke (0,20);
strokeWeight(20);
line (mouseX,0,width-mouseY,height);
if (salvar==true) {
endRecord();
salvar=false;
}
}

void mousePressed() {
salvar=true
}

Explicando o código passo a passo:

Com este novo código, salvamos um arquivo no formato PDF a cada vez que pressionamos o botão do mouse. Os nomes dos arquivos salvos possuem uma numeração sequencial. Execute o código, pressione o mouse algumas vezes e verifique na pasta “data”, dentro do sketch (ctrl-K). Vamos explicar o código, primeiro temos antes da função setup():

 

import processing.pdf.*;
boolean salvar=false;

 

Para o “save” no formato PDF devemos importar a biblioteca (processing.pdf).
Logo após criamos uma variável do tipo “boolean” (ela pode valer apenas
true ou false) que será usada para a verificação se o mouse foi pressionado ou não. Agora, dentro da função draw():

 

if (salvar==true) {
beginRecord(PDF, “linha-###.pdf”);
}

if (salvar==true) verifica (condicional IF) se a variável salvar está valendo true (VERDADEIRO) . Se sim , permite a gravação de um frame com a instrução beginRecord. Preste atenção neste código (“linha.###.pdf”), pois é aqui que determinamos o nome do arquivo a ser salvo. No exemplo, serão salvos arquivos pdfs , numa sequência parecida com esta:

 

linha-001.pdf

linha-150.pdf

linha-320.pdf

Depois que qualquer desenho for feito, desabilitamos a gravação com endRecord() e preparamos o código para a próxima gravação com salvar=false. A linha salvar=false é importante, pois sem ela não podemos verificar se o mouse foi pressionado ou não.

 

if (salvar==true) {
endRecord();
salvar=false;
}

 

Interação

Note que a verificação do estado da variável “salvar” (se true ou false) será testado constantemente, visto que o código condicional if (salvar==true está dentro do looping draw(). Com a função mousePressed() , a variável “salvar” volta a valer true, permitindo novamente a verificação de if (salvar==true):

 

void mousePressed() {
salvar=true
}

 

Em qualquer momento podemos selecionar um instante da animação para ser gravado num determinado arquivo pdf. O uso da função draw() junto com mousePressed() permite uma ação de “ liga (salvar=false) e desliga (salvar=true)”.

 

 

Adaptando o código

Teste o seu próprio código de animação , bastando substituir a porção responsável pelo desenho dentro da função draw():

 

background (255);
stroke (0,20);
strokeWeight(20);
line (mouseX,0,width-mouseY,height);

Lembre que você pode usar a função random () para a geração de resultados aleatórios.


 

 

Tagged with: